Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Modification d'une colonne nvarchar dans un format de date

Donc, en supposant que ce sont les deux seuls formats de votre colonne, vous pouvez faire ce qui suit :

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

MISE À JOUR

Ok, si vous voulez une autre colonne, vous pouvez d'abord la créer puis remplir les valeurs :

-- 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

Après cela, vous pouvez vérifier la colonne pour voir si les valeurs sont correctes et seulement alors vous devez supprimer le DT_APP colonne.

MISE À JOUR 2 Si vous avez juste besoin de mettre à jour les valeurs actuelles, faites simplement :

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