MS-SQL Abfragen: Datum und Uhrzeit haben in der Ausgabe falsche Werte
Ich habe wenig bis keine Erfahrung im Umgang mit MS-SQL Abfragen und suche mir die meisten Sachen im Internet zusammen.
Aktuell bin ich auf ein Problem mit Datum und Uhrzeit gestoßen bei dem ich etwas Hilfe gebrauchen könnte.
Folgendes Problem
In einem Feld "Anlagedatum" steht ein Datum, z.B. "01.01.1971 00:00:00"
(Mir wurde jedenfalls glaubhaft versichert, dass das Datum 01.01.1971 bei der Anlage verwendet wurde)
Wenn ich dieses Feld nun abfrage bekomme ich als Ergebnis "1970-12-31 23:00:00.000"
Scheinbar wird bei der Ausgabe/Abfrage eine Stunde abgezogen, was am Ende das Ergebnis verfälscht
Ich bin schon auf die Idee gekommen die Ausgabe/Abfrage zu manipulieren und einfach eine Stunde drauf zu rechnen, weil ich vermute das es mit den Zeitzonen zu tun haben könnte. Vermutlich ist das aber nicht der richtige Weg, zumal es ha halbjährlich eine Zeit Umstellung gibt.
Meine Zeitzone habe ich folgendermaßen ermittelt
Abfrage: SELECT CURRENT_TIMEZONE()
Ausgabe: (UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
Meine Frage
Ist es möglich die Zeitzone in der Abfrage Global zu setzen, sodass alles Ergebnisse automatisch angepasst werden, ohne das ich jedes einzelne Ergebnis bearbeiten muss?
Meine Wunschvorstellung
Ich hoffe ich habe verständlich ausgedrückt wo der Schuh drückt, und hoffe inständig das mir hier jemand helfen kann.
Da ich nicht weiß was ich noch an hilfreichen Informationen liefern kann/soll, bitte danach Fragen. Sofern möglich werde asap alles geforderte nachliefern
Vielen Dank im Voraus
Ralf
Aktuell bin ich auf ein Problem mit Datum und Uhrzeit gestoßen bei dem ich etwas Hilfe gebrauchen könnte.
Folgendes Problem
In einem Feld "Anlagedatum" steht ein Datum, z.B. "01.01.1971 00:00:00"
(Mir wurde jedenfalls glaubhaft versichert, dass das Datum 01.01.1971 bei der Anlage verwendet wurde)
Wenn ich dieses Feld nun abfrage bekomme ich als Ergebnis "1970-12-31 23:00:00.000"
Scheinbar wird bei der Ausgabe/Abfrage eine Stunde abgezogen, was am Ende das Ergebnis verfälscht
Ich bin schon auf die Idee gekommen die Ausgabe/Abfrage zu manipulieren und einfach eine Stunde drauf zu rechnen, weil ich vermute das es mit den Zeitzonen zu tun haben könnte. Vermutlich ist das aber nicht der richtige Weg, zumal es ha halbjährlich eine Zeit Umstellung gibt.
Meine Zeitzone habe ich folgendermaßen ermittelt
Abfrage: SELECT CURRENT_TIMEZONE()
Ausgabe: (UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
Meine Frage
Ist es möglich die Zeitzone in der Abfrage Global zu setzen, sodass alles Ergebnisse automatisch angepasst werden, ohne das ich jedes einzelne Ergebnis bearbeiten muss?
Meine Wunschvorstellung
SET TimeZone 'W. Europe Standard Time'
SELECT Name, Anlagedatum
FROM Tabelle1
Ich hoffe ich habe verständlich ausgedrückt wo der Schuh drückt, und hoffe inständig das mir hier jemand helfen kann.
Da ich nicht weiß was ich noch an hilfreichen Informationen liefern kann/soll, bitte danach Fragen. Sofern möglich werde asap alles geforderte nachliefern
Vielen Dank im Voraus
Ralf
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 8076960545
Url: https://administrator.de/contentid/8076960545
Ausgedruckt am: 26.11.2024 um 05:11 Uhr
6 Kommentare
Neuester Kommentar
Ist es möglich die Zeitzone in der Abfrage Global zu setzen, sodass alles Ergebnisse automatisch angepasst werden, ohne das ich jedes einzelne Ergebnis bearbeiten muss?
Guckst duUnderstanding Time Zones in SQL Server
Dann du verstehen .
p.s.
(Mir wurde jedenfalls glaubhaft versichert, dass das Datum 01.01.1971 bei der Anlage verwendet wurde)
Wenn ich dieses Feld nun abfrage bekomme ich als Ergebnis "1969-12-31 23:00:00.000"
1 Jahr und 1 Stunde unterschied soll die Zeitzone sein ?? Zwischen 1.1.1970 und 1.1.1971 liegt schon noch ein Jahr Wenn ich dieses Feld nun abfrage bekomme ich als Ergebnis "1969-12-31 23:00:00.000"
Gruß siddius
Moin,
witzig ist ja, dass dir das Ergebnis exakt 1 Jahr und 1 Tag abzieht:
Kannst du das mal testen, was herauskommt, wenn man über das Eingabeformular etwas Neues einträgt?
Ansonsten kannst du die Lokale Zeit (inkl. Daylight-Saving-Time) so ausgeben lassen:
witzig ist ja, dass dir das Ergebnis exakt 1 Jahr und 1 Tag abzieht:
(Mir wurde jedenfalls glaubhaft versichert, dass das Datum 01.01.1971 bei der Anlage verwendet wurde)
Wenn ich dieses Feld nun abfrage bekomme ich als Ergebnis "1969-12-31 23:00:00.000"
Es hätte ja wenn denn dann der Wenn ich dieses Feld nun abfrage bekomme ich als Ergebnis "1969-12-31 23:00:00.000"
31.12.1970 23:00:00
ausgegeben werden müssen.Kannst du das mal testen, was herauskommt, wenn man über das Eingabeformular etwas Neues einträgt?
Ansonsten kannst du die Lokale Zeit (inkl. Daylight-Saving-Time) so ausgeben lassen:
SELECT [neudatetime] = CONVERT(datetime, AnlageDatum AT TIME ZONE 'UTC' AT TIME ZONE 'Central European Standard Time')
Hallo,
Und warum sollte dann dort nicht der umgerechnete Wert von 01.01.1971 00:00:00 stehen? Wenn deine Datenbankabfrage entsprechend deiner Zeitzone eingegebene Datumswerte umrechnet? Du willst doch dein Anlagedatum -1 Stunde haben, also irgendetwas berechnen. https://danielpeters.eu/clevere-datums-tricks-mit-sql-tsql-mysql/
Gruß,
Peter
Zitat von @ralfkausk:
Aktuell bin ich auf ein Problem mit Datum und Uhrzeit gestoßen bei dem ich etwas Hilfe gebrauchen könnte.
Dir ist schon Klar das nicht jedes Land ein Datum in tt.mm.jj oder tt.mm.jjjj wie wir in DE nutzen?Aktuell bin ich auf ein Problem mit Datum und Uhrzeit gestoßen bei dem ich etwas Hilfe gebrauchen könnte.
In einem Feld "Anlagedatum" steht ein Datum, z.B. "01.01.1971 00:00:00"
US Amerikanisches Datum? mm.tt,jjjj(Mir wurde jedenfalls glaubhaft versichert, dass das Datum 01.01.1971 bei der Anlage verwendet wurde)
Kann schon so sein.Wenn ich dieses Feld nun abfrage bekomme ich als Ergebnis "1969-12-31 23:00:00.000"
Wenn dies so eingetragen ist, ist es OK.Scheinbar wird bei der Ausgabe/Abfrage eine Stunde abgezogen, was am Ende das Ergebnis verfälscht
Du hinkst 1 Jahr hintendran. 1971 -1 Stunde ist nicht 1969...Ich bin schon auf die Idee gekommen die Ausgabe/Abfrage zu manipulieren
Dann Manipuliere doch. Du willst ja nur die Ausgabe Manipulieren, nicht den gespeicherten Wert in der Datenbank, oder?und einfach eine Stunde drauf zu rechnen, weil ich vermute das es mit den Zeitzonen zu tun haben könnte. Vermutlich ist das aber nicht der richtige Weg, zumal es ha halbjährlich eine Zeit Umstellung gibt.
Mit welcher Zeitzone wurde die (unbekannte) Datenbank (wegen deiner SQL) denn angelegt?Ausgabe: (UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
Oh Wunder (Berlin ist DE? Zeitzonen?)Ist es möglich die Zeitzone in der Abfrage Global zu setzen, sodass alles Ergebnisse automatisch angepasst werden, ohne das ich jedes einzelne Ergebnis bearbeiten muss?
Nachträglich oder beim Anlegen eines neuen Datensatzes?SET TimeZone 'W. Europe Standard Time'
SELECT Name, Anlagedatum
FROM Tabelle1
Ich hoffe ich habe verständlich ausgedrückt wo der Schuh drückt, und hoffe inständig das mir hier jemand helfen kann.
SQL Datenbank ist was? Version? Daten werden in welcher Zeitzone eingegeben?Gruß,
Peter