Taki eksperyment:
SELECT str_to_date('20/04/1978', '%d/%m/%Y'), unix_timestamp(str_to_date('20/04/1978', '%d/%m/%Y')), from_unixtime(unix_timestamp(str_to_date('20/04/1978', '%d/%m/%Y')))
W tym przypadku funkcje unix_timestamp() i from_unixtime() są odwracalne. W 2 kolumnie dostaniemy timestamp: 261871200
Jeśli jednak wykonamy taki skrypt:
<?php ?>
To zamiast oczekiwanego wyniku 20 dostaniemy wynik 19! Bliższe przyjrzenie zdradza, że
<?php ?>
Za pomocą strtotime(), dla daty 20 kwietnia 1978 otrzymamy timestamp 261874800 - godzinę później niż wartość zwrócona przez MySQL.
I teraz pytanie:
- czy to MySQL czy też PHP błędnie wylicza timestamp? Czy też może to zachowanie jest poprawne?
MySQL w wersji 5.0.38, PHP 5.2.1