Simone: Mysql und datum Auswertung

Hallo,
Self Gemeinde

Ich habe eine einfache Frage :o) wo ich nicht weiterkomme

Fehler

SQL-Befehl :

SELECT *
FROM tageserfassung
WHERE datum_anz
between to_date( '2006-01-01', 'yyyy-mm-dd' ) AND to_date( '2006-01-31', 'yyyy-mm-dd' )
LIMIT 0, 30

MySQL meldet:

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 '('2006-01-01', 'yyyy-mm-dd') AND to_date ('2006-01-31', 'yyyy-m

Struktur:
Feld        | Typ     | Standard
datum_anz   | DATE    | 0000-00-00

Warum dieser Query ein Fehler erzeugt ist mir unklar

Ich danke jetzt schon für die Antworten

Simone

  1. Hell-O!

    [...] to_date( '2006-01-01', 'yyyy-mm-dd' ) AND to_date( '2006-01-31', 'yyyy-mm-dd' )

    Die Funktion heißt STR_TO_DATE(). Deine Variante funktioniert so z.B. in Oracle.

    Siechfred

    --
    Ich bin strenggenommen auch nur interessierter Laie. (molily)
    Welcome To Carcass Cuntry || Steuerfreie Geburtsbeihilfen?  || RT 221 Erfurt-Altstadt i.V.
    1. Hallo Siechfred

      Danke dir für Deine Antwort!
      Ich habe jetzt das Problem lösen können.

      Simone

      Dein Ansatz geht nicht!

      SELECT *
      FROM tageserfassung
      WHERE datum_anz
      between STR_TO_DATE(
      '2006-01-01', '%Y-%m-%d'
      ) AND STR_TO_DATE(
      '2006-01-31', '%Y-%m-%d'
      )
      LIMIT 0, 30

      Das geht:

      SELECT *
      FROM tageserfassung
      WHERE datum_anz
      between DATE_FORMAT(
      '2006-01-01', '%Y-%m-%d'
      ) AND DATE_FORMAT(
      '2006-01-31', '%Y-%m-%d'
      )
      LIMIT 0, 30

      1. Hallo ihr beiden!

        ich hatte auch mal eine Anwendung, in der ich viel mit Daten arbeiten musste. ich bin dazu übergegangen, in der Datenbank Timestamps abzulegen, weil man damit besser rechnen kann.

        aber kürzlich habe ich dazu eine Klasse gefunden, die speziell datumsbearbeitung macht:
        http://doku.clausvb.de/vlib_klassen.htm

        Vielleicht hilft es euch ja weiter...

        schöne grüße,
        Tobi

        Hallo Siechfred

        Danke dir für Deine Antwort!
        Ich habe jetzt das Problem lösen können.

        Simone

        Dein Ansatz geht nicht!

        SELECT *
        FROM tageserfassung
        WHERE datum_anz
        between STR_TO_DATE(
        '2006-01-01', '%Y-%m-%d'
        ) AND STR_TO_DATE(
        '2006-01-31', '%Y-%m-%d'
        )
        LIMIT 0, 30

        Das geht:

        SELECT *
        FROM tageserfassung
        WHERE datum_anz
        between DATE_FORMAT(
        '2006-01-01', '%Y-%m-%d'
        ) AND DATE_FORMAT(
        '2006-01-31', '%Y-%m-%d'
        )
        LIMIT 0, 30

        1. hi,

          ich hatte auch mal eine Anwendung, in der ich viel mit Daten arbeiten musste. ich bin dazu übergegangen, in der Datenbank Timestamps abzulegen, weil man damit besser rechnen kann.

          Meinst du jetzt Unix Timestamps, oder den TIMESTAMP-Typ von MySQL?

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Meinst du jetzt Unix Timestamps, oder den TIMESTAMP-Typ von MySQL?

            UNIX-Timestamp abgelegt als int

            Grüße,
            Tobi

            1. hi,

              Meinst du jetzt Unix Timestamps, oder den TIMESTAMP-Typ von MySQL?

              UNIX-Timestamp abgelegt als int

              Aha, dacht ich's mir doch, du beliebtest mit deiner Aussage zu scherzen.

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }