![]() |
MYSQL Datumsvergleich
Hallo
Habe folgendes Problem, die Abfrage liefert immer nix zurück. Obwohl es Datensätze in diesem Datumsbereich gibt. Statement: SELECT * from Veranstaltung where Datum >= "2004-01-01" and Datum <="2004-31-01" |
Und wie ist das Feld "Datum" definiert?
|
Erstens würde ich [Datum] schreiben und nicht Datum und zwotens machst du einen textvergleich und wenn du ein datumsfeld mit einem text vergleichst geht das meist in die hose :)
Schreib das datum als #1/1/2004# denn " ist das zeichen für text. Und keine bindestriche sondern / ... dann sollte es auch mit dem nachbarn klappen ;) |
Das Feld Datum ist als Date definiert. Dachte wenn ich einen String mit Bindenstrichen übergeben wandelt mysql selbstädig in ein Datum um. In der Doku von mysql war es auch so zu finden. Bist du idr sicher das es mit # funktioniert?
|
probier mal ' statt "
gruss, snowman |
Hab ich schon hat auch nicht funktioniert.
|
jetzt aber: datumsangabe muß so erfolgen: JJJJ-MM-TT
gruss, snowman |
|
mysql_query("select * from Veranstaltung where Datum >= '2004-01-01' and Datum <= '2004-31-01'");
|
Zitat:
er hat nur eine einfache sql-abfrage gepostet. und das letzte datum ist 100% in der falschen reihenfolge. gruss, snowman |
Jetzt wär es interessant welches SQL du verwendest und wo (in welchem programm, umgebung) wenn das mit den # auch nicht funkt. Denn unter Access schreibt man ... SELECT * FROM tabDummy WHERE (((tabDummy.Zeit)>#1/14/2004# And (tabDummy.Zeit)<#1/16/2004#));
Verwendest du die sql anweisung als abfrage oder als parameter beim programmieren ? Bei manchen systemen muss man die SQL anweisung mit ; abschliessen und bei manchen nicht. Hast du das schon probiert ? |
Meine Herren, im Subject steht
"MYSQL Datumsvergleich" |
Upsi, na ja das fettgedruckte überles ich meist *gg* da denk ich mir immer "zu dick aufgetragen" :D
|
Wenn ich mir sein posting nochmal anschau dann fehlt meiner meinung nach der ";" am ende.
Oder versuch mal SELECT ... WHERE myDatum BETWEEN '2003-08-04' AND '2003-08-07' aber auch mit ";" am ende. Also nicht > oder < sondern BETWEEN. Vielleicht kannst du für dein problem aber auch eine normale funktion benutzen ... http://www.mysql.com/doc/en/Date_and...functions.html |
der fehler ist das falsche datumsformat, bitte glaubs mir.
gruss, snowman |
mein Senf
Code:
SELECT * FROM `veranstaltung` WHERE `datum` >= '2004-01-01' AND `datum` < '2004-01-31' |
bitte strings immer konvertieren ...
http://www.mysql.com/doc/en/Date_and...functions.html Zitat:
|
warum?
http://www.mysql.com/doc/en/DATETIME.html Zitat:
snowman |
Datumsformat ...
Kann mich snowman nur anschliessen, da das Datumsformat falsch ist.
YYYY-MM-DD wäre richtig, also: SELECT * from Veranstaltung where Datum >= '2004-01-01" AND Datum <= '2004-01-31' gruss, schera |
Snowman hat recht, am Datumsformat ist es gelegen. Gibt man ein ungültiges Datum an so meint MYSQL 0000-00-00 zum Vergleich nehmen zu müssen. => Datum ist nie kleiner und es kommt nix zurück.
Danke für eure Hilfe. Eine andere Kurze Frage noch. Gibt es in PHP eine Möglichkeit die Elemente eines Arrays durch die Elemente eines anderen Arrays zu dividieren oder muss man das händisch machen? LG Jürgen |
@snowman
ich konvertiere strings, die ein datum repräsentieren, immer ins date-format ... warum? auf verschiedenen maschinen kann das date-format unterschiedlich sein ... ein skript/statement läuft auf der einen maschine aber auf der anderen nicht ... wenn man von haus aus eine konvertierung macht, spart man sich lange fehlersuche ... gut, bei mysql mag immer das format YYYY-MM-DD angenommen werden ... bei anderen DB's ist das aber nicht zwingend so, da diese ev. das datumsformat der jeweiligen konfiguration verwenden (DD.MM.YYYY, DD-MON-YY, usw.) ... |
Alle Zeitangaben in WEZ +2. Es ist jetzt 18:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag