Aktuelles datum IM select ?
Pedda
- datenbank
Hallo zusammen,
ich habe folgendes Problem mit einer mysql-DB:
Ich habe eine Tabelle Termine mit den Feldern id,name,datum,text.
Das Feld 'datum' ist leider ein CHAR(10) und beinhaltet die Termindaten als String 'tt.mm.jjjj'. Dieses Feld darf von mir NICHT geändert werden.
Nun soll ich die Felder datum, name, text der beiden Datensätze ausgeben, die am nächsten in der Zukunft liegen.
Beispiel:
|id|name| datum |text|
-------------------------
| 1|Otto|01.01.2000| xyz|
-------------------------
| 2|Manu|02.02.2000| abc|
-------------------------
| 3| Ben|03.03.2000| ght|
-------------------------
heute ist der 05.01.2000
also soll die Ausgabe
Momentan ORDER ich nach datum mit limit 2.
...muss aber das WHERE um datum > heute erweitern....
und DAS ist das problem.
Kann mir einer sagen wie das gehen soll ? Muss ich tatsächlich einen Umweg über ein zweites select mit 'select now();' gehen, oder kann ich das auch in einem select abfackeln ???
Bitte, bitte helft mir *g*
Gruss aus Münster
Pedda
Hallo Pedda
ich habe folgendes Problem mit einer mysql-DB:
Das Feld 'datum' ist leider ein CHAR(10) und beinhaltet die Termindaten als String 'tt.mm.jjjj'. Dieses Feld darf von mir NICHT geändert werden.
Dieses Format ist insbesondere zum Sortieren und Vergleichen denkbar schlecht geeignet.
heute ist der 05.01.2000
also soll die Ausgabe
- 02.02.2000 Manu abc
- 03.03.2000 Ben ght sein.
Momentan ORDER ich nach datum mit limit 2.
Wie kommst Du auf die Idee, dass diese Anweisung dir das zurückliefert, was Du willst?
05.01.2000 ist als String interpretiert größer als 02.02.2222 (als String interpretiert)
Kann mir einer sagen wie das gehen soll ? Muss ich tatsächlich einen Umweg über ein zweites select mit 'select now();' gehen, oder kann ich das auch in einem select abfackeln ???
Wenn Du mit Datumsangaben arbeiten willst, dann musst Du zuerst Deinen String in ein Datum umwandeln.
Freundliche Grüsse,
Vinzenz
yo,
heute ist der 05.01.2000
upps, back to the future ?
Kann mir einer sagen wie das gehen soll ? Muss ich tatsächlich einen Umweg über ein zweites select mit 'select now();' gehen, oder kann ich das auch in einem select abfackeln ???
ja es geht in einer abfrage, aber wie Vinz schon gesagt hat, ist deine spalte datum denkbar schlecht gewählt und müsste erst noch mal durch einige funktionen aufgearbeitet werden.
SELECT name, datum, text
FROM tabelle
WHERE mehrere_Funktionen(datum) > NOW()
ORDERY BY mehrere_Funktionen(datum) limit 2;
Ilja
hi,
Das Feld 'datum' ist leider ein CHAR(10) und beinhaltet die Termindaten als String 'tt.mm.jjjj'.
NOW() kannst du mittels DATE_FORMAT() auch auf dieses format bringen.
wird dir aber wohl wenig nützen, da wie gesagt dieses format zum sortieren ungeeignet ist.
gruss,
wahsaga