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:
YYYYMMDDfür reine Datumsangaben (kein Zeitanteil) - hier beachten:keine Bindestriche! , das ist sehr wichtig!YYYY-MM-DDist NICHT unabhängig von den Datumsformat-Einstellungen in Ihrem SQL Server und NICHT Arbeit in allen Situationen!
oder:
YYYY-MM-DDTHH:MM:SSfü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.