[MySQL] GMT in plaats van local timezone in queries

Pagina: 1
Acties:

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
In queries gebruik ik vaak select unix_timestamp(time) as time ... en in PHP converteer ik dat dan met gmdate. Dat gaat prima, maar nu heb ik een query die hour(time) gebruikt, maar dat gaat fout. De lokale tijd wordt gebruikt in plaats van GMT.
Ik heb de docs doorgelezen en alleen TZ veranderen lijkt een oplossing, maar vaak heb je geen root access en is dat toch geen optie.
Is er niks anders om hour() toch op de GMT tijd te laten werken?

  • cavey
  • Registratie: Augustus 2000
  • Laatst online: 11-06 07:23
Ehm, ik vrees van niet. Want de mysql timestamp staat gewoon in je lokaal ingestelde tijdzone.....

Je kan wellicht via php ofzo opvragen wat het verschil is met je huidige timezone en GMT, en dit van hour(time) af te halen dan wel op te tellen ...


select ... hour(time)-$GMT_DIFF as hour, ... ofzo

[addendum]
http://www.mysql.com/doc/en/Date_and_time_functions.html

lees daar net iets over UTC_TIME() functies in MySQL, geen idee in welke versie dat zit, maar misschien dat je daar iets mee kan?

hour(utc_time(timestamp)) ?

[ Voor 28% gewijzigd door cavey op 05-11-2003 11:30 ]


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
UTC_TIMESTAMP() is available as of MySQL 4.1.1
Maar now() is al GMT dacht ik, dus deze functie helpt me niet.
Die utc_* functie hebben toch geen argumenten?

[ Voor 16% gewijzigd door Olaf van der Spek op 05-11-2003 11:40 ]


  • cavey
  • Registratie: Augustus 2000
  • Laatst online: 11-06 07:23
Dacht juist dat now() gewoon current systemtime gaf, en niet hardware time...

heb net even lopen zoeken met hwclock, mijn hardware clock staat helaas op CET ipv GMT. Dacht dat ik dat nog had ingesteld, niet dus.

Ehm, ik weet trouwens niet of die utc_* functies argemunten hebben. Heb iets te vluchtig daarvoor op de mysql site gekeken (wel gespot dat die in 4.1.1+ zitten)

  • VisionMaster
  • Registratie: Juni 2001
  • Laatst online: 18-07 20:32

VisionMaster

Security!

OlafvdSpek schreef op 05 november 2003 @ 11:36:
[...]
Maar now() is al GMT dacht ik, dus deze functie helpt me niet.
Die utc_* functie hebben toch geen argumenten?
select now() geeft localtime
code:
1
2
3
4
5
6
7
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2003-11-05 11:50:40 |
+---------------------+
1 row in set (0.00 sec)

I've visited the Mothership @ Cupertino


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
VisionMaster schreef op 05 november 2003 @ 12:01:
[...]

select now() geeft localtime
code:
1
2
3
4
5
6
7
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2003-11-05 11:50:40 |
+---------------------+
1 row in set (0.00 sec)
Ja, maar als je unix_timestamp(time) doet en time is een timestamp kolom, dan is het wel GMT. Als je unix_timestamp(now()) doet, is het ook GMT (gok ik).

Ik denk dat het tijd is voor een bug report of feature request.

  • VisionMaster
  • Registratie: Juni 2001
  • Laatst online: 18-07 20:32

VisionMaster

Security!

OlafvdSpek schreef op 05 november 2003 @ 18:31:
[...]

Ja, maar als je unix_timestamp(time) doet en time is een timestamp kolom, dan is het wel GMT. Als je unix_timestamp(now()) doet, is het ook GMT (gok ik).

Ik denk dat het tijd is voor een bug report of feature request.
Als ik iets met now() doe dan krijg ik de tijd in mijn localtime setting.
Met unix_timestamp() krijg ik een ander format voor de tijd. Waarvan de tijd now() is dus local. Wat ik gok is dat je daar gmt_time of hoe hete die functie daar moet invoeren en ja die zit volgens de specs in de nieuwere versies. Ik gebruik 4.0.13 als productie database en kan de 'feature' maar niet aan de praat krijgen.

Ik denk dus dat het een bug-report wordt :?

I've visited the Mothership @ Cupertino

Pagina: 1