2016-09-29 8 views
2

Ich habe zwei Spalten:Zwei nvarchar-Spalten in einer Datetime. MSSQL

date(nvarchar) - it looks like '2015-04-15 00:00:00.000' 
time(nvarchar) - looks like '1899-12-30 11:20:25.000' 

Ich brauche, dass in einer Spalte (Datumzeit) fusionieren. Wie könnte ich es tun?

Antwort

1

Speichern Sie Datums-/Uhrzeitwerte nicht zuerst als Zeichen. Aber Sie können sie konvertieren und hinzufügen:

select cast(datechar as datetime) + cast(right(timechar, 12) as time) 

Ich habe gerade realisiert. Ich kann mich nicht erinnern, ob die Standardformate für Datum und Uhrzeit die Sekundenbruchteile verstehen. Das folgende ist sicherer:

select (convert(datetime, datechar, 121) + 
     convert(time, convert(datetime, timechar, 121)) 
     ) as datetimeval 
+0

Addition funktioniert für verschiedene Datatpes? (Datum und Uhrzeit) –

+0

@RaduGheorghiu. . . Ich bin überrascht, dass die Dokumentation nicht besser ist, aber ich habe festgestellt: "Die Operatoren plus (+) und minus (-) können auch verwendet werden, um arithmetische Operationen für datetime- und smalldatetime-Werte durchzuführen." Die Umwandlung in Zeit soll sicherstellen, dass es nur eine "Zeit" -Komponente gibt; Ich denke, SQL Server konvertiert es zurück in eine "Datetime". –

0

Nachdem Sie die dritte Spalte ([FullDate]) zum Beispiel hinzugefügt haben, können Sie den folgenden Code verwenden:

UPDATE TABLE 
SET [FullDate] = DATEADD(SECOND, SECOND(TIME), DATEADD(MINUTE, MINUTE(TIME), DATEADD(HOUR, HOUR(TIME), DATE))) 

Alternativ können Sie tun, wie @GordonLinoff erwähnt, aber Stelle sicher, dass du den time Teil zu datetime wirfst. Also, etwas wie das:

UPDATE TABLE 
SET [FullDate] = CAST([date] as DATETIME) + CAST([time] AS DATETIME) 
Verwandte Themen