Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> FROM_UNIXTIME() zwraca błędnego timestampa
singollo
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 1
Dołączył: 25.11.2003

Ostrzeżenie: (0%)
-----


Napotkałem na niepokojące zachowanie MySQLa przy operowaniu datami.

Taki eksperyment:
  1. SELECT
  2. str_to_date('20/04/1978', '%d/%m/%Y'),
  3. unix_timestamp(str_to_date('20/04/1978', '%d/%m/%Y')),
  4. 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:

  1. <?php
  2. echo date('d', 261871200);
  3. ?>


To zamiast oczekiwanego wyniku 20 dostaniemy wynik 19! Bliższe przyjrzenie zdradza, że
  1. <?php
  2. echo date('d-m-Y H:i:s', 261871200); // wyswietli 19-04-1978 23:00:00
  3. ?>


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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 09:14