Tanja: MySQL5: CONVERT_TZ

Moin,

in einer Tabelle habe ich alle Date_Time Werte genormt auf UTC+0.
Nun möchte ich Einträge davon für die einzelnen Tage aggregieren, wobei Nutzer aus DE wegen der Zeitzone=Europe/Berlin=CET manchmal +01:00 und manchmal +02:00 benötigen.

CONVERT_TZ könnte ich nun also abhängig von Sommer bzw. Winterzeit) CONVERT_TZ(date_time,"00:00","+02:00") oder "+01:00" verwenden.

Soweit OK, aber was, wenn WHERE DATE(date_time) BETWEEN "2012-01-01" AND "2012-12-31"? Hier wäre in Abhängigkeit von date_time zu unterscheiden, ob +1 oder +2 zu verwenden ist.

Habt ihr einen Trick, um das elegant und ohne Hilfsfunktion oder Hilfstabelle zu lösen?

Thx

  1. Tach!

    Habt ihr einen Trick, um das elegant und ohne Hilfsfunktion oder Hilfstabelle zu lösen?

    Nein, ohne Zeitzonentabellen kann es MySQL nicht, eine Hilfsfunktion willst du auch nicht, richtig raten und in den Kalender schauen kann MySQL nicht.

    Was spricht denn dagegen, die Zeitzonentabelle von MySQL zu füllen oder füllen zu lassen (sowie regelmäßig mal upzudaten)? Dann kann CONVERT_TZ() mit Zonennamen arbeiten und selbständig richtig umrechnen.

    dedlfix.

    1. Moin!

      Habt ihr einen Trick, um das elegant und ohne Hilfsfunktion oder Hilfstabelle zu lösen?

      Nein, ohne Zeitzonentabellen kann es MySQL nicht, eine Hilfsfunktion willst du auch nicht, richtig raten und in den Kalender schauen kann MySQL nicht.

      Was spricht denn dagegen, die Zeitzonentabelle von MySQL zu füllen oder füllen zu lassen (sowie regelmäßig mal upzudaten)? Dann kann CONVERT_TZ() mit Zonennamen arbeiten und selbständig richtig umrechnen.

      Es ist anzumerken, dass Zeitzonenkonvertierung nur für die Vergangenheit korrekt funktionieren kann. Denn Sommerzeit ist ein künstliches Konstrukt und kann vom Menschen beliebig verändert werden, deshalb weiß man nur für die Vergangenheit, wie sich der Mensch jeweils entschieden hat - die Pläne für die Zukunft sind hingegen noch nicht in Stein gemeißelt und können auch recht kurzfristig geändert werden.

      Im Prinzip ist auch die Zugehörigkeit zu einer Zeitzone künstlich und kann geändert werden - Länder oder Gebiete am Rand einer Zeitzone können sich im Prinzip entscheiden, lieber zu der benachbarten Zeitzone zu gehören.

      Wenn man sowas korrekt berechnen will, helfen Zeitzonenangaben wie "MEZ" oder "+0100" nichts, weil das nur der anzuwendende Offset zu UTC ist - erforderlich ist die Zeitzonenangabe wie "Europe/Berlin", denn nur damit weiß man, nach welchen örtlichen Bestimmungen die Zeitzone auch historisch zu berechnen ist.

      - Sven Rautenberg

      1. die Pläne für die Zukunft sind hingegen noch nicht in Stein gemeißelt und können auch recht kurzfristig geändert werden.

        Um hier ein aktuelles Beispiel zu nennen:

        Die Russen haben Ende 2011 auf "ewige Sommerzeit" umgstellt und sich nur 1 Jahr später wären sie schon fast so weit gewesen, wieder zurückzuwechseln und haben dann im letzten Moment einen rückzieher gemacht und wollten "nur noch 1x" umstellen um dann doch wieder darauf zu verzichten :)