Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Błędy przy konwersji znacznika czasu na postać czytelną.
Forum PHP.pl > Forum > Bazy danych > MySQL
jarek_bolo
Witam.

Taką małą dziwną rzecz mam.
Wpisując to co poniżej:
  1. mysql> SELECT FROM_UNIXTIME(1151701200) AS DATA
  2. -> ;
  3. +---------------------+
  4. | DATA |
  5. +---------------------+
  6. | 2006-06-30 22:59:37 |
  7. +---------------------+
  8. 1 row IN SET (0.00 sec)
  9.  
  10. mysql>


Otrzymuję datę nieodpowiadającą rzeczywistej dacie jaka jest pod tym znacznikiem.
Za pomocą funkcji PHP lub tego konwertera otrzymuję prawidłową datę czyli: 2006-06-30 23:00:00

Ktoś wie dlaczego tak jest? Środowisko to: WinXP, a na nim WAMPSEVER 2.0 (MySQL 5.0.51a, PHP 5.2.5, Apache 2.2.8). Wszystko na jednym kompie.
teutates
Proponuje sprawdzic strefe czasowa serwera, zapewne jest inna niz serwera z phpem. Umnie obie daty sa prawidlowe, poniewaz mysql ma strefe czasowa SYSTEM ktoa pobiera z systemu hosta, podobnie jak php.
Pozdrawiam
jarek_bolo
Tak wiem o ustawieniach stref czasowych. I przyznam, że bawiłem się tym, bo początkowo planowałem trzymać wpisy w kolumnach typu timestamp, a te żeby poprawnie działały baza musi mieć ustawioną strefę czasową. Domyślnie jest ona SYSTEM.
Całość jest opisana tutaj, czytałem to już od dechy do dechy.
http://dev.mysql.com/doc/refman/5.0/en/tim...ne-support.html

Ściągnąłem plik z strefami czasowymi do wypełnienia tabeli w bazie danych i z poniższej strefy:
  1. mysql> SELECT @@global.time_zone, @@session.time_zone;
  2. +--------------------+---------------------+
  3. | @@global.time_zone | @@session.time_zone |
  4. +--------------------+---------------------+
  5. | SYSTEM | SYSTEM |
  6. +--------------------+---------------------+
  7. 1 row IN SET (0.00 sec)
  8.  
  9. mysql>


zmieniłem na:
  1. mysql> SET GLOBAL time_zone = 'Europe/Warsaw';


A w kodzie PHP również mam ustawianą strefę czasową, bo przy ustawieniach błędów na STRICT i ALL parser pluje się jeśli tego nie zrobimy.
  1. <?php
  2. date_default_timezone_set( 'Europe/Warsaw');
  3. ?>


Poza tym to jest różnica tylko kilkunastu sekund, gdyby to było z powodu stref czasowych to miał bym różnicę co najmniej jednej godziny.
teutates
dziwna sprawa.. ja bym poszukal na mysqlbugs
u mnie wszystko pokazuje sie luxusik:)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.