Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Modifica di una colonna nvarchar in un formato Data

Quindi, supponendo che quelli siano gli unici due formati della tua colonna, puoi fare quanto segue:

SELECT CONVERT(NVARCHAR(19),CONVERT(DATETIME,DT_APP,100),120)
FROM YourTable
WHERE DT_APP LIKE '%[aA-zZ]%'

AGGIORNATO

Ok, se vuoi un'altra colonna, puoi prima crearla e poi riempire i valori:

-- First create a new column
ALTER TABLE YourTable
ADD DT_APP2 DATETIME;

-- Fill that column with DATETIME values
UPDATE YourTable
SET DT_APP2 =   CASE WHEN DT_APP LIKE '%[aA-zZ]%'
                THEN CONVERT(DATETIME,DT_APP,100)
                ELSE CONVERT(DATETIME,DT_APP,120) END

Dopodiché, puoi controllare la colonna per vedere se i valori sono corretti e solo allora dovresti eliminare il DT_APP colonna.

AGGIORNAMENTO 2 Se hai solo bisogno di aggiornare i valori correnti, fai semplicemente:

UPDATE YourTable
SET DT_APP = CONVERT(NVARCHAR(19),CONVERT(DATETIME,DT_APP,100),120)
WHERE DT_APP LIKE '%[aA-zZ]%'