Avatar billede -rayman- Nybegynder
25. april 2001 - 19:51 Der er 12 kommentarer og
1 løsning

Ændring af tidszone i mysql

Jeg er ved at lave en tagwall hvor tags\'ene skal gemmes i en myssqldatabase. Der er bare det problem, at den skal gemme tidspunktet hvor beskeden bliver skrevet, og at serveren står i en anden tidszone end vores. Vi (Danmark) er 2 timer foran det sted hvor serveren står.
Jeg har prøvet med date_add og så tilføje 2 timer, men det virker ikke.
Hvis der er nogen som har nogen ideer, så lad mig endelig høre :)

Det sted i koden hvor jeg henter oplysningerne er:

$result = mysql_query(\"select nick, email, tag, date_format(date_add(tidspunkt, INTERVAL 2 HOURS), \'%H:%i\') as tid, date_format(date_add(tidspunkt, INTERVAL 2 HOURS), \'%d-%m-%Y\') as dato from tags order by tidspunkt desc\", $connection);

Det sted hvor jeg sætter dem ind er:
mysql_query(\"INSERT into tags (nick, email, tag, tidspunkt) VALUES (\'$nick\', \'$email\', \'$tag2\', now())\", $connection);

Hvad er forkert......oprindeligt havde jeg ikke date_add med men istedet bare (tidspunkt, \'%H:%i\') men så var det den skrev det forkerte tidspunkt.
Avatar billede daae Nybegynder
26. april 2001 - 12:39 #1
Hvordan er \'tidspunkt\'-feltet defineret?
Avatar billede daae Nybegynder
26. april 2001 - 12:51 #2
Hvis du benytter PHP, kan du før din insert skrive:

putenv (\'TZ=Europe/Amsterdam\');

Hvis du så hiver det aktuelle tidspunkt ud:

$time = time(); // Nu, i unix timestamp

Kan du indsætte på denne måde:

mysql_query(\"INSERT into tags (nick, email, tag, tidspunkt) VALUES (\'$nick\', \'$email\', \'$tag2\', \'$time\')\", $connection);

Og trække ud på denne måde:

$result = mysql_query(\"select nick, email, tag, date_format(from_unixtime(tidspunkt), \'%H:%i\') as tid, date_format(date_add(from_unixtime(tidspunkt), \'%d-%m-%Y\') as dato from tags order by tidspunkt desc\", $connection);

/ Daae
Avatar billede daae Nybegynder
26. april 2001 - 12:52 #3
Ehm ... men det kræver at dit \'tidspunkt\'-felt er en INT og ikke et timestamp :o)

/ Daae
Avatar billede mortenfn Nybegynder
26. april 2001 - 13:39 #4
den nemmeste er
$tid=time()+(60*60*2) så indsætter du $tid i basen. Kolonnen skal være INT. Ved udskrigt bruger du så date(\"  \",$tid);
Avatar billede daae Nybegynder
26. april 2001 - 13:45 #5
Ja, okay ... det giver det samme resultat - men ikke hvis maskinen flytter tidszone ;o)

/ Daae
Avatar billede -rayman- Nybegynder
26. april 2001 - 14:18 #6
Jeg har prøvet din metode Daae......der er bare det problem, at på den server hvor min side er hosted har jeg ikke lov til at ændre tidszonen....
den siger:
Warning: Safe Mode: Cannot set environment variable \'TZ\' - it\'s not in the allowed list in .....

Din metode virker fint på min egen apache, men der hvor siden er uploadet virker den ikke.

Avatar billede daae Nybegynder
26. april 2001 - 14:23 #7
Okay .. så brug mortenfn\'s

$time = time() * 3600;

Resten skulle køre...

/ Daae
Avatar billede -rayman- Nybegynder
26. april 2001 - 14:39 #8
Har du forresten ikke glemt at fjerne et date_add i $result?????
Avatar billede daae Nybegynder
26. april 2001 - 14:50 #9
Jo, selvfølgelig. Det skal se således ud:

$result = mysql_query(\"select nick, email, tag, date_format(from_unixtime(tidspunkt), \'%H:%i\') as tid, date_format(from_unixtime(tidspunkt), \'%d-%m-%Y\') as dato from tags order by tidspunkt desc\", $connection);

:o)

/ Daae
Avatar billede -rayman- Nybegynder
26. april 2001 - 15:03 #10
Jeg kan ikke få Mortnefn\'s metode til at virke.....jeg tror ikke jeg er helt klar over hvordan jeg skal få skrevet tidspunkt og dato ud vha. date()....

Kunne en af jer ikke lige skrive hvordan det er meningen at resultat skal skrives ud.....altså hvordan $result så skal se ud.....
Avatar billede daae Nybegynder
26. april 2001 - 15:08 #11
Det skal se ud på samme måde som i mit svar. Du skal kun bruge PHP\'s date() funktion, hvis du IKKE formatterer teksten i MySQL, men det gør du jo med date_format() i din $result.
Avatar billede -rayman- Nybegynder
26. april 2001 - 15:23 #12
Mange tak for hjælpen......
Det virker nu :o)
Avatar billede daae Nybegynder
26. april 2001 - 15:25 #13
Det var så lidt :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester