Announcement

Collapse
No announcement yet.

Group By && SELECT mit Zeitverschiebung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Group By && SELECT mit Zeitverschiebung

    Hallo Zusammen,

    ich will eine Abfrage in der Oracle-DB machen, in der die Datumswerte mit einer Verschiebung um 7 Stunden berücksichtigt werden.

    d.h. ich habe in der Tabelle "table1" für 5 Jahre, für jede Stunde im Jahr einen Wert. Und ich muss diese Werte monatsweise aufsummieren, wobei einen Monat am 01. um 07:00 anfängt und am letzten Tag des Monats um 06:00 endet.

    Struktur der Tabelle "table1":
    =================================
    Datum | Wert
    =================================
    2004.01.01 01:00 44
    ...
    2008.01.01 01:00 34
    2008.01.01 02:00 24
    2008.01.01 03:00 14
    ...
    2009.08.05 00:00 45
    Mit folgender SQL-Abfrage werden zwar Werte monatsweise aufsummiert,
    nur wird das spezielles Monatsformat (01.MM.YYYY 07:00 - letzterTag.MM.YYYY 06:00) nicht berücksichtigt:

    SELECT TO_CHAR(datum, 'YYYY/MM') as jahrmonat, SUM(WERT)
    FROM table1
    GROUP BY TO_CHAR(datum, 'YYYY/MM')
    ORDER BY jahrmonat ASC;
    Gibt es eine Möglichkeit die Zeitverschiebung in der SQL-Abfrage zu berücksichtigen?
    Zuletzt editiert von diman; 05.08.2009, 23:51.

  • #2
    ich habe hier einige Beispiele gefunden und werde morgen folgende SQL-Abfrage testen:

    Code:
    SELECT TO_CHAR(datum-7/24, 'YYYY/MM') as jahrmonat, SUM(WERT)
    FROM table1
    GROUP BY TO_CHAR(datum-7/24, 'YYYY/MM')
    ORDER BY jahrmonat ASC;

    Comment


    • #3
      Gastag oder gibt's das auch noch woanders?

      Gruß

      Ralf

      Comment


      • #4
        ja,

        wie macht mann die Abfrage richtig?

        Comment


        • #5
          du musst deinen monat entsprechend einschränken.

          bei uns beginnen die tage um 22:00 Uhr. daher kenne ich das prob.

          beispiel WHERE-Clause (ungetestet):

          where datum between to_date(to_char(trunc(datum,'mm'),'dd.mm.rrrr') ||'06:59:59', 'dd.mm.rrrr hh24:mi:ss')
          and to_date(to_char(last_day(datum),'dd.mm.rrrr') ||'06:00:00', 'dd.mm.rrrr hh24:mi:ss')

          Comment


          • #6
            danke sehr für die Hilfe.

            Mit folgender Abfrage funktioniert es:
            Code:
            SELECT TO_CHAR(datum-7/24, 'YYYY/MM') as jahrmonat, SUM(WERT)
            FROM table1
            GROUP BY TO_CHAR(datum-7/24, 'YYYY/MM')
            ORDER BY jahrmonat ASC;

            Comment


            • #7
              Ich hab da noch ne Frage: Was ist mit der knappen Sunde zwischen 06:00:01 und 06.59.59 ?

              Comment

              Working...
              X