MySQL, UNIX_TIMESTAMP() och tidszoner.

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Stockholm
  • 2004-05-23 22:39

Hej

Har precis dykt på knas. Alla MySQL-servrar jag använt mig av har varit konfigurerade med default tidszon och då fungerar UNIX_TIMESTAMP utmärkt. Däremot så blir det ju jätteknasigt när man har konfigurerat sin SQL-server att köra CEST då UNIX_TIMESTAMP svarar med sekunder ifrån 1970 enligt GMT ??

Någon som har en fräsch lösning på det här? Eller måste man skriva om alla sina databasfrågor!?
Skulle det vara min egna sql-server skulle jag kanske konfigurera den med fel tidszon för att komma runt problemet men nu är det ett webbhotell så det är lite svårare. Skulle även vara lärorikt att lösa det här problemet ordentligt.

saxat från mysql.com

Citat:

UNIX_TIMESTAMP(date)

If called with no argument, returns a Unix timestamp (seconds since '1970-01-01 00:00:00' GMT) as an unsigned integer. If UNIX_TIMESTAMP() is called with a date argument, it returns the value of the argument as seconds since '1970-01-01 00:00:00' GMT. date may be a DATE string, a DATETIME string, a TIMESTAMP, or a number in the format YYMMDD or YYYYMMDD in local time.
mysql> SELECT UNIX_TIMESTAMP();
-> 882226357
mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
-> 875996580

When UNIX_TIMESTAMP is used on a TIMESTAMP column, the function returns the internal timestamp value directly, with no implicit ``string-to-Unix-timestamp'' conversion. If you pass an out-of-range date to UNIX_TIMESTAMP(), it returns 0, but please note that only basic range checking is performed (year from 1970 to 2037, month from 01 to 12, day from 01 from 31). If you want to subtract UNIX_TIMESTAMP() columns, you might want to cast the result to signed integers. See section 13.7 Cast Functions.

  • Medlem
  • International user
  • 2004-05-23 23:37

Vilken version på mysqld används? Och vilken plattform används?

  • Medlem
  • Stockholm
  • 2004-05-24 08:21

Osäker på vilken version det är på publika servern. Lokalt kör jag 4.0.15

Kan man konvertera ett datetime-fält till UNIX_TIMESTAMP fast med egenvald tidszon för när den ska räkna sekunderna ifrån?

  • Medlem
  • International user
  • 2004-05-24 21:00

Jag vet inte riktig vad du menar, men jag får samma värde:

$> date +%s (systemtid i shellet)

och

mysql> select unix_timestamp(now()); (timezone=CEST, version=4.0.18, Mac OS X Server 10.3.3)

ger samma resulat.

1
Bevaka tråden