Announcement

Collapse
No announcement yet.

Vorangegangene Business-Tag anzeigen

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

  • Vorangegangene Business-Tag anzeigen

    Hallo zusammen,

    ich habe folgende kurze Frage: Mit folgendem Befehl schaffe ich es aktuell die gewünschten Information des Vortages zu bekommen:

    Select max(DATE_FORMAT(NOW() - INTERVAL 1 DAY, "%d %m %Y")) as 'Datum'

    Das klappt wie gesagt ohne Probleme. Allerdings würde ich gerne an einem Montag die Daten vom Freitag erhalten. Ich bin hier gerade überfragt, ob dies möglich ist.

    Besten Dank für eure Hilfe.

    LG Felix

  • #2
    Wie immer:
    Case/when benutzen
    Christian

    Comment


    • #3
      Habe folgendes probiert:

      CASE
      WHEN WEEKDAY(NOW()) = 0 THEN max(DATE_FORMAT(NOW() - INTERVAL 3 DAY, "%d %m %Y")) AS "Vortag"
      WHEN WEEKDAY(NOW()) = 1 THEN max(DATE_FORMAT(NOW() - INTERVAL 1 DAY, "%d %m %Y")) AS "Vortag"
      WHEN WEEKDAY(NOW()) = 2 THEN max(DATE_FORMAT(NOW() - INTERVAL 1 DAY, "%d %m %Y")) AS "Vortag"
      WHEN WEEKDAY(NOW()) = 3 THEN max(DATE_FORMAT(NOW() - INTERVAL 1 DAY, "%d %m %Y")) AS "Vortag"
      WHEN WEEKDAY(NOW()) = 4 THEN max(DATE_FORMAT(NOW() - INTERVAL 1 DAY, "%d %m %Y")) AS "Vortag"
      ELSE "Vortag"
      END AS 'Datum1',

      Klammere ich falsch? Geht so leider noch nicht. Auch folgendes hat nicht geklappt:

      CASE
      WHEN WEEKDAY(NOW()) = '0' THEN max(DATE_FORMAT(NOW() - INTERVAL 3 DAY, "%d %m %Y")) AS "Vortag"
      WHEN WEEKDAY(NOW()) = '1' THEN max(DATE_FORMAT(NOW() - INTERVAL 1 DAY, "%d %m %Y")) AS "Vortag"
      WHEN WEEKDAY(NOW()) = '2' THEN max(DATE_FORMAT(NOW() - INTERVAL 1 DAY, "%d %m %Y")) AS "Vortag"
      WHEN WEEKDAY(NOW()) = '3' THEN max(DATE_FORMAT(NOW() - INTERVAL 1 DAY, "%d %m %Y")) AS "Vortag"
      WHEN WEEKDAY(NOW()) = '4' THEN max(DATE_FORMAT(NOW() - INTERVAL 1 DAY, "%d %m %Y")) AS "Vortag"
      ELSE "Vortag"
      END AS 'Datum1',

      Comment


      • #4

        warum so kompliziert?
        Wenn Montag dann
        max(DATE_FORMAT(NOW() - INTERVAL 3 DAY, "%d %m %Y"))
        sonst
        max(DATE_FORMAT(NOW() - INTERVAL 1 DAY, "%d %m %Y"))

        Weekday gibt eine Nummer zurück. Des Weiteren weist du 2x einen Spaltennamen zu. Einmal Vortag und einmal Datum1

        "Geht nicht" ist kein Fehler -> Fehlermeldung? Ergebnis ist an Stelle x falsch
        Christian

        Comment


        • #5
          CASE
          WHEN WEEKDAY(0) THEN max(DATE_FORMAT(NOW() - INTERVAL 3 DAY, "%d %m %Y")) AS "Vortag"
          ELSE max(DATE_FORMAT(NOW() - INTERVAL 1 DAY, "%d %m %Y")) AS "Vortag"
          END AS Datum

          führt zu:

          SQL Fehler (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS "Vortag"ELSE max(DATE_FORMAT(NOW() - INTERVAL 1 DAY, "%d %m %Y")) AS "Vorta' at line 3uery

          Comment


          • #6
            Was ist das
            WHEN WEEKDAY(0)
            Was könnte 0 für ein Datum sein?
            WHEN WEEKDAY(NOW()) = 0

            Und du hast noch immer:

            Des Weiteren weist du 2x einen Spaltennamen zu. Einmal Vortag und einmal Datum Darauf weisst dich der Fehler hin: right syntax to use near 'AS "Vortag"

            Das ändert sich nicht, wenn du die 1 wegnimmst

            CASE
            WHEN WEEKDAY(NOW()) = 0 THEN
            max(DATE_FORMAT(NOW() - INTERVAL 3 DAY, "%d %m %Y"))
            ELSE
            max(DATE_FORMAT(NOW() - INTERVAL 1 DAY, "%d %m %Y"))
            END AS VORTAG
            Christian

            Comment


            • #7
              Perfekt, das klappt. Vielen Dank!!!!

              Comment

              Working...
              X