SQL Server speichert kein DateTime
in einem beliebigen Zeichenfolgenformat - es wird als 8-Byte-Zahlenwert gespeichert.
Die verschiedenen Einstellungen (Sprache, Datumsformat) beeinflussen nur, wie die DateTime
wird Ihnen in SQL Server Management Studio angezeigt - oder wie es analysiert wird, wenn Sie versuchen, eine Zeichenfolge in eine DateTime
zu konvertieren .
Es gibt viele Formate, die von SQL Server unterstützt werden – siehe die MSDN-Onlinedokumentation zu CAST und KONVERTIEREN . Die meisten dieser Formate sind abhängig davon ab, welche Einstellungen Sie haben - daher können diese Einstellungen manchmal funktionieren - und manchmal nicht.
Um dies zu lösen, verwenden Sie das ISO-8601-Datumsformat das von SQL Server unterstützt wird - dieses Format funktioniert immer - unabhängig von Ihren SQL Server-Sprach- und Datumsformateinstellungen.
Das ISO-8601-Format wird von SQL Server unterstützt, gibt es in zwei Varianten:
YYYYMMDD
für reine Datumsangaben (kein Zeitanteil) - hier beachten:keine Bindestriche! , das ist sehr wichtig!YYYY-MM-DD
ist NICHT unabhängig von den Datumsformat-Einstellungen in Ihrem SQL Server und NICHT Arbeit in allen Situationen!
oder:
YYYY-MM-DDTHH:MM:SS
für Datum und Uhrzeit - hier beachten:Dieses Format hat Bindestriche.
Dies gilt für SQL Server 2000 und neuer.
Wenn Sie SQL Server 2008 und das DATE
verwenden Datentyp (nur DATE
- nicht DATETIME
!), dann können Sie zwar auch den YYYY-MM-DD
verwenden Format und das funktioniert auch mit allen Einstellungen in Ihrem SQL Server.
Fragt mich nicht, warum dieses ganze Thema so verzwickt und etwas verwirrend ist – es ist einfach so. Aber mit dem YYYYMMDD
format, sollten Sie für jede Version von SQL Server und für jede Sprach- und Datumsformateinstellung in Ihrem SQL Server geeignet sein.