Forum Pplware

Versão Completa: Time Zone SQL+PHP
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
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!
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';".
Olá Bruno. Por acaso já tinha visto essa solução.
Mas como aplico?
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';
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).
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!
Boas,
Eu costumo definir no php desta forma:

date_default_timezone_set('Europe/Lisbon');

antes da query.
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.
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
URL's de Referência