Problem mit Abfrage nach Datum

06/11/2008 - 10:16 von Borsdorf, Thomas | Report spam
Hi NG!

Ich bin gerade dabei eine PHP-Anwendung so umzuschreiben das sie neben
MySQL auch auf MSSQL làuft. Dabei bin ich auf ein interessantes Problem
gestoßen bei Abfragen die ein Datum enthalten:

MSSQL liefert mir Datums-Werte im amerikanischen/internationalen Format
(also für heute "2008-11-05"), daher wollte ich dieses Format auch bei
meinen Abfragen verwenden. Sprich wenn ich Daten vom 01.02.2008 sehen
will frage ich ab "...where datum = '2008-02-01'...". Interessanter
weise liefert MSSQL mir bei dieser Abfrage allerdings Daten vom
02.01.2008! Offenbar wird bei der Interpretation der Datumsangabe in der
Abfrage Tag und Monat vertauscht. Gegenprobe: Frage ich ab "...where
datum = '2008-01-02'..." erhalte ich Daten vom 01.02.2008.

"SELECT dateformat FROM master..syslanguages WHERE name = @@LANGUAGE"
und "DBCC USEROPTIONS" liefern mir als Datumsformat "dmy"!
Das Ganze passiert unter SQL-Server 2000 Standard und SQL-Server 2005
Express, geprüft mit PHP, SQL-Server 2000 Enterprise Manager und
SQL-Server 2005 Management Studio Express.

Wie kann sowas sein?
Welche Einstellung habe ich übersehen?
Wie kann ich abfragen in welchem Format ich die Datumswerte bei der
Abfrage angeben muss bzw. MSSQL mitteilen welches Format ich verwenden will?

MfG Thomas.
 

Lesen sie die antworten

#1 Frank Kalis
06/11/2008 - 10:25 | Warnen spam
On 6 Nov., 10:16, "Borsdorf, Thomas" wrote:

Ich bin gerade dabei eine PHP-Anwendung so umzuschreiben das sie neben
MySQL auch auf MSSQL làuft. Dabei bin ich auf ein interessantes Problem
gestoßen bei Abfragen die ein Datum enthalten:

MSSQL liefert mir Datums-Werte im amerikanischen/internationalen Format
(also für heute "2008-11-05"), daher wollte ich dieses Format auch bei
meinen Abfragen verwenden. Sprich wenn ich Daten vom 01.02.2008 sehen
will frage ich ab "...where datum = '2008-02-01'...". Interessanter
weise liefert MSSQL mir bei dieser Abfrage allerdings Daten vom
02.01.2008! Offenbar wird bei der Interpretation der Datumsangabe in der
Abfrage Tag und Monat vertauscht. Gegenprobe: Frage ich ab "...where
datum = '2008-01-02'..." erhalte ich Daten vom 01.02.2008.

"SELECT dateformat FROM master..syslanguages WHERE name = @@LANGUAGE"
und "DBCC USEROPTIONS" liefern mir als Datumsformat "dmy"!
Das Ganze passiert unter SQL-Server 2000 Standard und SQL-Server 2005
Express, geprüft mit PHP, SQL-Server 2000 Enterprise Manager und
SQL-Server 2005 Management Studio Express.

Wie kann sowas sein?
Welche Einstellung habe ich übersehen?
Wie kann ich abfragen in welchem Format ich die Datumswerte bei der
Abfrage angeben muss bzw. MSSQL mitteilen welches Format ich verwenden will?




SET DATEFORMAT ymd sollte helfen. Vielleicht solltest Du Dir das:
http://www.insidesql.org/beitraege/...datentypen
auch einmal durchlesen.
Frank Kalis
Microsoft SQL Server MVP
Webmaster: http://www.insidesql.org

Ähnliche fragen