Forum Pplware
Time Zone SQL+PHP - Versão de Impressão

+- Forum Pplware (http://forum.pplware.com)
+-- Fórum: Mais Tech (/forumdisplay.php?fid=11)
+--- Fórum: Programação e Web (/forumdisplay.php?fid=16)
+--- Tópico: Time Zone SQL+PHP (/showthread.php?tid=10848)



Time Zone SQL+PHP - Droids - 15-02-2012 23:09

Olá Malta!

Estou aqui com um problema e preciso da vossa ajuda!

É o seguinte, o meu site está alojado nos EUA.
Quando faço uma Query à BD e uso a função now() (SQL) fica com a hora dos EUA. E eu queria definir no PHP que a hora do era por exemplo de Portugal.

Sei que existe date_add(now(), INTERVAL VALOR UNIDADE), mas queria evitar usa-la.

Para funções de data do PHP defino previamente num ficheiro date_default_timezone_set("Europe/Lisbon"). O que queria era fazer algo do género do set timezone do PHP mas para a BD.

OBS: BD em MySQL.

Desde já obrigado!


RE: Time Zone SQL+PHP - Bruno Bernardino - 15-02-2012 23:17

Olá Droids,

A forma mais fácil será, no momento da ligação à BD (depois do mysql_connect()), fazer um "SET time_zone = 'Europe/Lisbon';".


RE: Time Zone SQL+PHP - Droids - 15-02-2012 23:22

Olá Bruno. Por acaso já tinha visto essa solução.
Mas como aplico?


RE: Time Zone SQL+PHP - rei007 - 16-02-2012 19:36

Viva Droids,

Aplicas tal e qual como o Bruno disse.

Acedes à base de dados e onde escreves os selects para retornar os valores das tabelas escreves o SET time_zone = 'Europe/Lisbon';


RE: Time Zone SQL+PHP - Bruno Bernardino - 16-02-2012 19:49

Peço desculpa, não tinha subscrito o tópico.

Exactamente como o Manuel disse, fazes uma query. Aconselho a fazê-la logo a seguir à ligação (se tiveres um sistema bem feito — a trabalhar com utf-8 em vez de iso-8859-1 —, hás-de ter normalmente um "SET NAMES 'utf8'" ou algo do género logo a seguir à ligação).


RE: Time Zone SQL+PHP - Droids - 16-02-2012 23:00

Boas malta! Desde já agradeço por me ajudarem neste problema.

Tentei fazer o que o Bruno e rei007 me indicaram mas não funciona.
Vou postar o que tenho no código:

Código PHP:
$host 'localhost';
$user 'root';
$pass '';
$bd 'utf8_teste';

$link=mysql_connect($host,$user,$pass) or die ( 'ERRO!' );
mysql_query("SET time_zone = 'Europe/Lisbon';");

//Mostar o TimeZone da BD
$resultadomysql_fetch_row(mysql_query("SHOW VARIABLES LIKE  'time_zone'"));
echo 
$resultado[1];//Resultado: SYSTEM 

Alguma ideia porque não funciona?

OBS: Se a query for
Código PHP:
SET time_zone '+5:00'
funciona!


RE: Time Zone SQL+PHP - Miguel Guerra - 19-02-2012 22:36

Boas,
Eu costumo definir no php desta forma:

date_default_timezone_set('Europe/Lisbon');

antes da query.


RE: Time Zone SQL+PHP - Bruno Bernardino - 20-02-2012 14:55

Deverá depender da versão, talvez, ou da configuração. Tenta 'GMT' Em vez de 'Europe/Lisbon'.

@Miguel Guerra, isso funciona para o PHP, não para o MySQL, que é o que o Droids quer.


RE: Time Zone SQL+PHP - Droids - 23-02-2012 23:35

Olá Malta,

Obrigado pelas respostas e desculpem este pequeno "desaparecimento". Smile
Bruno testei isso na minha máquina, mas não funciona.
Vou testar assim que possível no servidor e depois comunico o resultado.

CUMPS