SQL Abfrage über letzte KW

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    SQL Abfrage über letzte KW

    Hi zusammen,

    ich habe einige SQL Abfrage, die sich immer auf die letzte KW beziehen. Dabei muss ich derzeit immer die konkrete Periode (also Startdatum und Enddatum) bei der Abfrage eingeben. Gibt es eine Möglichkeit, dass in SQL so zu programmieren, dass sich SQL immer automatisch auf die letzte KW bezieht? Ich nutze Mysql. Mein Skript sieht derzeit so aus:

    select sum(base_subtotal)
    from sales_flat_order
    where created_at between '2014-09-08 00:00:00' and '2014-09-14 23:59:59'

    Wäre super wenn jemand was wüsste!

    Grüße
    Ich glaube mir würde schon reichen wenn ich wüsste, wie ich bei einem Datum das ich mir über die Funktion now() bspw. 09.09.2014 11:49:17 ziehe die Uhrzeit auf 00:00:00 bzw 23:59:59 setzen kann. Kann man das nicht einfach iwie hart dort hineinschreiben?

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „HRGS“ ()

    ErfinderDesRades schrieb:

    Kann man einfach 7 von einem Datum abziehen, und es ist eine Woche früher?
    Nein. Eigentlich war es als Pseudocode gedacht.
    Richtig geht es mit Date_Add bzw. Date_Sub

    SQL-Abfrage

    1. BETWEEN DATE_SUB(DAY(NOW()), INTERVAL WEEKDAY(NOW)+7 DAY) AND DATE_SUB(DAY(NOW()), INTERVAL WEEKDAY(NOW) DAY)


    Die Interval-Funktion alleine müsste aber auch gehen.
    Wenn ich eine MySQL- DB hier hätte, würde ich es sogar so testen:

    SQL-Abfrage

    1. ​BETWEEN DAY(NOW()) - INTERVAL2 WEEK AND DAY(NOW()) - INTERVAL 1 WEEK
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „petaod“ ()

    Ich habe gerade mal mit einem MySQL-Server gespielt.
    Die einfachste Variante ist wirklich das direkte Abziehen, solange man mit Date-Format arbeitet.
    ​... BETWEEN CURDATE()-WEEKDAY(CURDATE())-7 AND CURDATE()-WEEKDAY(CURDATE())
    Falls du es sekundengranular und exklusiv der Endezeit benötigst, musst du das Ganze in DateTime konvertieren und eine Sekunde abziehen.
    ... BETWEEN CONVERT(CURDATE()-WEEKDAY(CURDATE())-7,DATETIME) AND CONVERT(CURDATE()-WEEKDAY(CURDATE()),DATETIME)-INTERVAL 1 SECOND
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --