ti-enxame.com

Como converter a data UTC para o fuso horário local no MySql Select Query

Estou usando esta condição Where em uma das minhas consultas com o MySql Database.My Problem é que eu tenho uma coluna de tempo de exibição na minha tabela, mas essa coluna da tabela mostra os dados no UTC Time.and eu quero converter essa coluna de tempo de exibição no Local Time Zone.so como posso fornecer esse recurso a partir da própria consulta.

Eu arregacei as coisas e com isso sabia que algo como SELECT CONVERT_TZ() funcionaria para isso.mas não está funcionando para mim.

Aqui está minha consulta na qual preciso converter o horário de exibição para o fuso horário local ... para que alguém possa me orientar?

WHERE displaytime >= '2012-12-01 00:00:00'
  AND displaytime <='2013-02-22 23:59:59'
  AND ct.organizationId IN (
    SELECT t.organizationId
      FROM organization_ AS t
      JOIN organization_ AS p ON t.treePath LIKE CONCAT(p.treePath, '%')
     WHERE p.organizationId = 10707

enter image description here Dados de amostra

enter image description here

46
User 1531343

SELECT CONVERT_TZ () funcionará para isso. Mas não está funcionando para mim.

Por que erro você recebe?

SELECT CONVERT_TZ(displaytime,'GMT','MET');

deve funcionar se o seu tipo de coluna for timestamp ou date

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_convert-tz

Teste como isso funciona:

SELECT CONVERT_TZ(a_ad_display.displaytime,'+00:00','+04:00');

Verifique sua tabela de fuso horário

SELECT * FROM mysql.time_zone;
SELECT * FROM mysql.time_zone_name;

http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

Se essas tabelas estiverem vazias, você não inicializou suas tabelas de fuso horário. De acordo com o link acima, você pode usar o programa mysql_tzinfo_to_sql para carregar as tabelas de fuso horário. Por favor tente isto

Shell> mysql_tzinfo_to_sql /usr/share/zoneinfo

ou se não estiver funcionando, leia mais: http://dev.mysql.com/doc/refman/5.5/en/mysql-tzinfo-to-sql.html

101
iiro

No meu caso, onde os fusos horários não estão disponíveis no servidor, isso funciona muito bem:

SELECT CONVERT_TZ(`date_field`,'+00:00',@@global.time_zone) FROM `table`

Nota: global.time_zone usa o fuso horário do servidor. Você precisa ter certeza de que possui o fuso horário desejado!

25
Felix Geenen
 select convert_tz(now(),@@session.time_zone,'+05:30')

substitua '+05: 30' pelo fuso horário desejado. veja aqui - https://stackoverflow.com/a/3984412/2359994

para formatar no formato de hora desejado, por exemplo:

 select DATE_FORMAT(convert_tz(now(),@@session.time_zone,'+05:30') ,'%b %d %Y %h:%i:%s %p') 

você será semelhante a este -> 17 de dezembro de 2014 10:39:56

10
Som