Z databaze jsou vraceny o hodinu posunute záznamy

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
machine_9
Člen | 1
+
0
-

Pri vraceni vysledku ze dne, kdy se menil cas (25. 10. 2015) ci z drivejsich dni z CEST jsou z MySQL vraceny o hodinu posunute zaznamy.

Mam tabulku records se sloupcem
created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

Kdyz v databazi pustim dotaz
SELECT id, created
FROM records
WHERE created >= ‚2015–10–25 00:00:00‘
AND created < ‚2015–10–26 00:00:00‘
vrati mi to vysledky s hodnotou created 2015–10–25 00:04:57 – 2015–10–25 23:54:50

kdyz dotaz pustim v Nette, do vysledku se z databaze nactou zaznamy s hodnotou created 2015–10–25 01:00:48 – 2015–10–25 23:54:50.
Kdyz si vsak vsechny hodnoty vypisu, vypisi se hodnoty 2015–10–25 00:00:48 – 2015–10–25 23:54:50 a ve vysledcich nejsou zadne zaznamy s hodnotou mezi 3. a 4. hodinou.
Zaznam s vypsanou hodnotou 2015–10–25 00:00:48 ma realne v databazi ulozeno 2015–10–25 01:00:48

na serveru je nastaveno
Timezone: Europe/Prague (CET, +0100)

v mysql je nastaveno
@@global.time_zone SYSTEM
@@session.time_zone SYSTEM

kdyz si pred volanim dotazu zmenim @@session.time_zone, tak to potom zase vraci nespravne vysledky pro dni po 2015–10–25

Muze mi nekdo poradit, jak na to, aby se do vysledku vratily spravne zaznamy?
Zmene datoveho typu nebo jinym upravam v tabulce bych se chtel vyhnout, jelikoz je hodne obsahla.

pata.kusik111
Člen | 78
+
0
-

machine9 napsal(a):

Pri vraceni vysledku ze dne, kdy se menil cas (25. 10. 2015) ci z drivejsich dni z CEST jsou z MySQL vraceny o hodinu posunute zaznamy.

Mam tabulku records se sloupcem
created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

Kdyz v databazi pustim dotaz
SELECT id, created
FROM records
WHERE created >= ‚2015–10–25 00:00:00‘
AND created < ‚2015–10–26 00:00:00‘
vrati mi to vysledky s hodnotou created 2015–10–25 00:04:57 – 2015–10–25 23:54:50

kdyz dotaz pustim v Nette, do vysledku se z databaze nactou zaznamy s hodnotou created 2015–10–25 01:00:48 – 2015–10–25 23:54:50.
Kdyz si vsak vsechny hodnoty vypisu, vypisi se hodnoty 2015–10–25 00:00:48 – 2015–10–25 23:54:50 a ve vysledcich nejsou zadne zaznamy s hodnotou mezi 3. a 4. hodinou.
Zaznam s vypsanou hodnotou 2015–10–25 00:00:48 ma realne v databazi ulozeno 2015–10–25 01:00:48

na serveru je nastaveno
Timezone: Europe/Prague (CET, +0100)

v mysql je nastaveno
@@global.time_zone SYSTEM
@@session.time_zone SYSTEM

kdyz si pred volanim dotazu zmenim @@session.time_zone, tak to potom zase vraci nespravne vysledky pro dni po 2015–10–25

Muze mi nekdo poradit, jak na to, aby se do vysledku vratily spravne zaznamy?
Zmene datoveho typu nebo jinym upravam v tabulce bych se chtel vyhnout, jelikoz je hodne obsahla.

Není to přímá odpoveď, ale pokud umíš anglicky a chceš se o této problematice něco dozvědět (a jak na to), tak doporučuji tuto otázku na stackoverflow. Zatím nejucelenější povídání, které jsem o tom našel.