• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

DATE-Typ vergleich mit UNIX_TIMESTAMP

Hi,

ich hatte bisher nur die Historischen Tagesdaten in einer Liste.
Und mir war bis dahin nichts aufgefallen
Nun hatte ich per Zufall ein Datum in der Zukunft
und der Datensatz wurde in die Abfrage übernommen

doch eigentlich sollte die folgende Zeile diese ausschließen.

PHP:
WHERE Veroeffentlicht_am <= UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))

Veroeffentlicht_am ist ein DATE-Typ
Da DATE aber eine ganzzahl ist aber größer als der TIMESTAMP von jetzt (mit einem Kommawert) bin ich davon ausgegangen das es egal ist.
Zumal ich keine Fehlermeldungen oder Notice bekomme.

Muss ich DATETIME verwenden oder liegt es an etwas anderem?
 
Ich glaube ich hatte dir woanders schonmal gesagt:
Man kann nur Datentypen mit sich selbst vergleichen.

Code:
WHERE Veroeffentlicht_am <= UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))

wäre in etwa so als würde man schreiben

Code:
WENN Anzahl_Äpfel <= Höhe_Eiffelturm

Wenn Du ein Feld vom Typ DATETIME hast und dieses mit einem anderen Zeitpunkt vergleichen willst, hast Du somit die Wahl zwischen:

a) Vergleich DATETIME mit DATETIME
b) Vergleich in UNIX_TIMESTAMP umgewandeltes DATETIME mit UNIX_TIMESTAMP
c) Vergleich mit DATE_FORMAT in bestimmtes Format umgewandeltes DATETIME mit einer Angabe im selben DATE_FORMAT-Format

Beispiel:
Richtig:
Code:
WHERE Veroeffentlicht_am <= NOW()
(geht da bei NOW() auch ein DATETIME-Datentyp herauskommt)

Falsch:
Code:
WHERE Veroeffentlicht_am <= UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))
(geht nicht da z.B. der Wert '04.05.2012 23:00:00' mit 123456789 verglichen wird)
 
Ich glaube ich hatte dir woanders schonmal gesagt:
Man kann nur Datentypen mit sich selbst vergleichen.

Hast Du ... aber wie gesagt es lief und ich habe es wohl wenn ich die folgenden Zeilen sehe nicht verstanden

Wenn Du ein Feld vom Typ DATETIME hast und dieses mit einem anderen Zeitpunkt vergleichen willst, hast Du somit die Wahl zwischen:

a) Vergleich DATETIME mit DATETIME
b) Vergleich in UNIX_TIMESTAMP umgewandeltes DATETIME mit UNIX_TIMESTAMP
c) Vergleich mit DATE_FORMAT in bestimmtes Format umgewandeltes DATETIME mit einer Angabe im selben DATE_FORMAT-Format

was ist mit dem umgewandelten DATETIME gemeint?

Beispiel:
Richtig:
Code:
WHERE Veroeffentlicht_am <= NOW()
(geht da bei NOW() auch ein DATETIME-Datentyp herauskommt)

Falsch:
Code:
WHERE Veroeffentlicht_am <= UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))
(geht nicht da z.B. der Wert '04.05.2012 23:00:00' mit 123456789 verglichen wird)

ich habe auch gedacht as 123456700,54321 mit 123456789 verglichen wird.

----------nachtrag
es funktioniert
bin gespannt auf die Erklärung
 
Zuletzt bearbeitet:
Zurück
Oben