bierkistenschlepper
Goto Top

Like bei Datetime oder Timestamp in MYSQL

Meine DB enthält folgenden Eintrag in der Tabelle event
eid, datum, plane, name
5 2009-05-14 20:00:00 Bierkeller Stammtisch

Das Feld datum hat den Typ timestamp

jetzt will ich nur Einträge anzeigen, die im aktuellen Monat sind, also
SELECT * FROM event WHERE 'datum' LIKE '2009-05%'

Die Anfrage liefert kein Ergebnis (aber keine Fehlermeldung)

Das hier hilft auch nichts:

SELECT * FROM event WHERE cast('datum' AS char) LIKE '2009-05%'

Ich bin jetzt ziemlich ratlos.

Edit: Ahhh... wenn man als Typ dateTime verwendet geht es auch... Komisch. Was genau ist denn der Unterschied zwischen Datetime und Timestamp?

Content-Key: 116715

Url: https://administrator.de/contentid/116715

Printed on: April 25, 2024 at 04:04 o'clock

Member: kugelschreiber
kugelschreiber May 25, 2009 at 12:21:39 (UTC)
Goto Top
Hi

Der Unterschied ist das Dir der "timestamp" die Anzahl an Sekunden liefert, die seit 01.01.1970 verstrichen sind.
Also eine Zahl in Sekunden seit 1970.

"dateTime" hat die Formatierung YYYY-MM-DD HH:MM:SS und liefert Dir ein bereits formatiertes Datum.

Also zwei völlig verschiedene Formate.

Gruß Kuli
Member: Frank
Frank May 25, 2009 at 13:31:10 (UTC)
Goto Top
Hier noch als Ergänzung:
SELECT * FROM event WHERE year(datum) = '2009' AND month(datum) = '5'
Das funktioniert mit "Timestamp" oder mit "dateTime"-Felder und ist effizienter als LIKE. Die DB rechnet die Felder automatisch um.

Du kannst mit dem Timestamp-Feld auch mit mit Zeitabständen rechnen (zeige mir alles vom letzten Monat (31 DAY); MONTH oder YEAR geht natürlich auch, die Units dazu findes du hier):
SELECT * FROM event WHERE datum BETWEEN SUBDATE(NOW(),INTERVAL 31 DAY) AND NOW()

Gruß
Frank
Member: Bierkistenschlepper
Bierkistenschlepper May 25, 2009 at 13:33:13 (UTC)
Goto Top
Danke für den Tipp!

Da muss man erstmal drauf kommen