Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Ändern einer nvarchar-Spalte in ein Datumsformat

Angenommen, dies sind die einzigen beiden Formate Ihrer Spalte, dann können Sie Folgendes tun:

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

AKTUALISIERT

Ok, wenn Sie eine andere Spalte wollen, dann können Sie sie zuerst erstellen und dann die Werte füllen:

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

Danach können Sie in der Spalte nachsehen, ob die Werte korrekt sind und erst dann sollten Sie die DT_APP löschen Spalte.

AKTUALISIERUNG 2 Wenn Sie nur die aktuellen Werte aktualisieren müssen, tun Sie dies einfach:

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