timediff
am 01.11.2006 11:16:08 von Andreas Sakowski
Hallo.
Bei folgender Query hätte ich erwartet, das der Vergleich
wahr ergibt:
select
timediff( '2006-10-10 10:00:00' , '2006-09-10 10:00:00' )
, timediff( '2006-10-10 10:00:00' , '2006-01-10 10:00:00' )
, timediff( '2006-10-10 10:00:00' , '2006-09-10 10:00:00' )
< timediff( '2006-10-10 10:00:00' , '2006-01-10 10:00:00' ) \G
| 720:00:00 | 6552:00:00 | 0 |
Tatsächlich ergibt der Vergleich unwahr. Es wird also der
Text verglichen und nicht die Stunden, Minuten, Sekunden.
Ist meine Erwartung falsch?
Gruß
Andreas
Re: timediff
am 01.11.2006 12:32:38 von Axel Schwenke
"Andreas Sakowski" wrote:
>
> Bei folgender Query hätte ich erwartet, das der Vergleich
> wahr ergibt:
>
> select
> timediff( '2006-10-10 10:00:00' , '2006-09-10 10:00:00' )
> , timediff( '2006-10-10 10:00:00' , '2006-01-10 10:00:00' )
> , timediff( '2006-10-10 10:00:00' , '2006-09-10 10:00:00' )
> < timediff( '2006-10-10 10:00:00' , '2006-01-10 10:00:00' ) \G
>
>| 720:00:00 | 6552:00:00 | 0 |
>
> Tatsächlich ergibt der Vergleich unwahr. Es wird also der
> Text verglichen und nicht die Stunden, Minuten, Sekunden.
>
> Ist meine Erwartung falsch?
MySQL hat keinen eigenen Typ für Zeitintervalle. Praktisch werden
Zeitintervalle immer aus Strings geparst bzw. als String zurück
gegeben. Das ist also kein Bug, sondern ein missing Feature.
Ein Workaround wäre, deine timediff() Ausdrücke mit time_to_sec()
in die jeweilige Zeitdauer in Sekunden umzuwandeln. Dann liefert
der Vergleich auch das erwartete Ergebnis.
XL