Peter Gabriel: Clever datetime benutzen

Hallo,

ich bin auf der Suche nach einer eleganten und effizienten Loesung fuer folgendes Problem. Ich habe in einer Tabelle eine Spalte im Datentyp datetime. Nun moechte ich bestimmte Werte selektieren, z.B. gib mir alle Datensaetze von gestern, vom 24.12.2005, ...

Die einzige Loesung die ich parat habe ist LIKE zu benutzen. Beispiel in PHP:
$query = "SELECT * FROM events WHERE datetime LIKE '" . date("Y-m-d", strtotime("yesterday")) . "%'";

Das wirkt auf mich irgendwie wenig effizient, gibt es da eine bessere Loesung?

Danke fuer Eure Mithilfe.

  1. Hallo Peter

    ich bin auf der Suche nach einer eleganten und effizienten Loesung fuer folgendes Problem. Ich habe in einer Tabelle eine Spalte im Datentyp datetime. Nun moechte ich bestimmte Werte selektieren, z.B. gib mir alle Datensaetze von gestern, vom 24.12.2005, ...

    Die einzige Loesung die ich parat habe ist LIKE zu benutzen.

    Es gibt viele weitere Vergleichsoperatoren,

    =

    bietet sich an :-)

    SELECT * FROM events WHERE datetime LIKE '" . date("Y-m-d", strtotime("yesterday")) . "%'";

    Ich finde es fürchterlich unelegant, reservierte  Wörter als Spaltennamen zu verwenden. Welchen Zeitpunkt gibt denn die Spalte an, benenne sie entsprechend. Die Maskierungszeichen sind übrigens von Datenbankmanagementsystem (DBMS) zu Datenbankmanagementsystem unterschiedlich, die Backticks und das DATETIME-Format lassen mich auf MySQL schließen.

    Das wirkt auf mich irgendwie wenig effizient, gibt es da eine bessere Loesung?

    Ja, auf mich auch - verwende ich auch nicht :-) Dein DBMS weist sicherlich Datums- und Zeitfunktionen auf, mit denen Du Dein Problem sauber lösen kannst, z.B:

    SELECT  
       spalte1,  
       spalte2,  
       <weitere Spalten>  
    FROM events  
    WHERE Formatfunktion(<datumsspalte>) = <datum in entsprechendem Datumsformat>
    

    Auf jeden Fall ist es eine gute Idee, für Datums- oder Zeitangaben den entsprechenden Datentyp zu verwenden.

    Freundliche Grüße

    Vinzenz

    1. Danke Vinzenz, hat mir sehr weiter geholfen!