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?
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?
Please also mark the comments that contributed to the solution of the article
Content-Key: 116715
Url: https://administrator.de/contentid/116715
Printed on: May 4, 2024 at 13:05 o'clock
3 Comments
Latest comment
Hier noch als Ergänzung:
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):
Gruß
Frank
SELECT * FROM event WHERE year(datum) = '2009' AND month(datum) = '5'
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