Markus Breitenbacher: SQL: alle Einträge zwischen zwei Date Formaten anzeigen?

Hallo,

ich möchte mir alle Einträge eines bestimmten Tages in einer DB anzeigen lassen, das Datumsformat ist hierbei z.B.: "2006-10-14 23:59:59"

Mit LIKE oder BETWEEN hab ich es nicht hinbekommen. Ich möchte etwas machen wie

SELECT * FROM table WHERE "create" BETWEEN "2006-10-10 00:00:00" AND "2006-10-10 23:59:59"

Für jede Hilfe dankbar,
Mark

  1. SELECT
     *
    FROM
     table
    WHERE
     (create BETWEEN "2006-10-10 00:00:00" AND "2006-10-10 23:59:59")

    Müsste m.E. aber funzen, wenn "create" einen richtig interpretierten Datentyp aufweist. Hilft sowas:
    http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html

    Zudem gibts natürlich das "doofe" workaround:
    WHERE
     (create >= "2006-10-10 00:00:00") AND
     (create <= "2006-10-10 23:59:59")

    1. Vielen Dank allen Helfern,

      letztendlich war das Problem, was ich hatte und deren Lösung ich hier gefunden habe die Benutzung des Backticks.

      Dies ist der Query in der fertigen Version:

      SELECT * FROM table WHERE (create LIKE "2006-10-10%") ORDER BY create DESC

      Danke,
      Mark

  2. Hi Mark,

    SELECT * FROM table WHERE "create" BETWEEN "2006-10-10 00:00:00" AND "2006-10-10 23:59:59"

    Für jede Hilfe dankbar,

    OK:

    execute immediate 'select * from '||table||' where '||create||' between to_date(''2006-10-10 00:00:00'',''YYYY-MM-DD HH24:MI:SS'') and to_date(''2006-10-10 23:59:59'',''YYYY-MM-DD HH24:MI:SS'')';

    Gruß

    Hans

  3. hi,

    ich möchte mir alle Einträge eines bestimmten Tages in einer DB anzeigen lassen, das Datumsformat ist hierbei z.B.: "2006-10-14 23:59:59"

    Wenn du uns dann noch mitteilen möchtest, welches DBMS du verwendest?

    Bei MySQL könntest du auch einfach abfragen, ob das Datum mit ""2006-10-14" beginnt. Und die Datumsfunktionen gibt es auch noch ...

    gruß,
    wahsaga

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

    Mit LIKE oder BETWEEN hab ich es nicht hinbekommen. Ich möchte etwas machen wie

    SELECT * FROM table WHERE "create" BETWEEN "2006-10-10 00:00:00" AND "2006-10-10 23:59:59"

    Faustregeln:

    1. Feste Werte (Strings, Zahlen, Daten) im SQL-Statement gehören in einfache Anführungsstriche: 'string', '12345', '2006-10-10 00:00:00'.
    2. Feld-, Tabellen- oder Datenbankbezeichner, die mit reservierten Wörtern (existierenden SQL-Befehlen etc.) kollidieren, müssen in Backticks: tabelle, feld
    3. Feld-, Tabellen- oder Datenbankbezeichner, die nicht mit reservierten Wörtern kollidieren, können in Backticks, müssen aber nicht: tabelle, feld
    4. Doppelte Anführungszeichen sind in SQL als Stringbegrenzer verboten!

    Kriegst du es jetzt hin, dein Statement zu korrigieren?

    - Sven Rautenberg

    --
    "Love your nation - respect the others."