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

SQL Server-Datumsformat benutzerabhängig?

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