Wenn Sie Datetimes mit Strings angeben müssen, sollten Sie einen Safe verwenden , sprachunabhängiges Format.
In SQL Server ist das das ISO-8601-Format (leicht angepasst), und es unterstützt grundsätzlich zwei sichere Formate für DATETIME
die immer funktionieren - unabhängig von Ihren Sprach-, Regions- und Datumsformateinstellungen:
YYYYMMDD (e.g. 20121231 for 31st of December 2012) if you need date only
YYYY-MM-DDTHH:mm:ss (e.g. 2012-12-31T21:05:00 for 31st of December 2012, 9:05pm)
Hinweis:
-
das erste Nur-Datum-Format enthält keine Bindestriche oder Trennzeichen!
-
das zweite Format hat Bindestriche für das Datum (kann auch weggelassen werden) und es gibt ein festes
T
als Trennzeichen zwischen dem Datums- und dem Zeitteil der Zeichenfolge
Aktualisierung: gemäß Ihrem letzten Kommentar (zu den verschiedenen Standardsprachen für die beiden Benutzer) - versuchen Sie Folgendes:
-- this is how your `SA` interprets the string as datetime....
SET LANGUAGE english
SELECT CAST('2012-11-30 23:59' AS DATETIME)
Funktioniert einwandfrei...
-- this is how your British user interprets teh string as datetime
SET LANGUAGE british
SELECT CAST('2012-11-30 23:59' AS DATETIME)
Dadurch wird versucht, die Zeichenfolge als 11. des 30. Monats 2012 zu interpretieren und offensichtlich schlägt das fehl....