2013-02-22 5 views
30

Я использую это Где условие в одном Из моего запроса с MySql Database.My Проблема в том, что у меня есть один столбец отображения в моей таблице, но в этом столбце таблицы отображаются данные в UTC Time.and я хочу преобразовать этот столбец displaytime в Local Time Zone.so, как я могу предоставить этот объект из самого запроса.Как преобразовать дату UTC в локальный часовой пояс в MySql Выберите запрос

Я изучил вещи и тем самым знал, что что-то вроде SELECT CONVERT_TZ() будет работать на это. Но это не работает для меня.

Вот мой запрос, в котором мне нужно преобразовать время отображения в местный часовой пояс ... так может ли кто-нибудь направить меня?

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 Выборочные данные

enter image description here

+2

Похоже, ваш тузд часовой пояс таблицы пусто. Для правильной работы CONVERT_TZ() необходимо выполнить команду mysql_tzinfo_to_sql. – ursuleacv

+0

где мы можем получить команду mysql_tzinfo_to_sql? – user1073214

ответ

73

ВЫБРАТЬ CONVERT_TZ() будет работать для that.but ее не работает для меня.

Почему, какая ошибка у вас?

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

должен работать, если ваш тип столбца метка времени или даты

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

испытаний, как это работает:

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

Проверьте вас часовой пояс стол

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

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

Если эти таблицы пусты, вы не инициализированы таблицы часового пояса. Согласно приведенной выше ссылке вы можете использовать программу mysql_tzinfo_to_sql для загрузки таблиц часовых поясов. Пожалуйста, попробуйте этот

shell> mysql_tzinfo_to_sql /usr/share/zoneinfo 

или если не работает читать дальше: http://dev.mysql.com/doc/refman/5.5/en/mysql-tzinfo-to-sql.html

+0

его значение null SELECT CONVERT_TZ (a_ad_display.displaytime, 'GMT', 'MET') как date_ из a_ad_display; Моя колонка - тип DATETIME –

+0

Можете ли вы опубликовать то, что SHOW CREATE TABLE a_ad_display \ G; будет отображаться – iiro

+0

, пожалуйста, см. мой обновленный вопрос ... данная привязка таблицы –

19

В моем случае, когда часовые пояса не доступны на сервере, это прекрасно работает:

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

Примечание: глобальный .time_zone использует часовой пояс сервера. Вы должны убедиться, что он имеет желаемый часовой пояс!

+0

Я получаю 10-15 секунд больше в метке времени UTC. –

+0

@ShashankShah Это секунды прыжка ... –

6
select convert_tz(now(),@@session.time_zone,'+05:30') 

заменить «+05: 30» на требуемый часовой пояс.смотрите здесь - https://stackoverflow.com/a/3984412/2359994

форматировать в нужный формат времени, например:

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

вы получите похожее на это -> 17 декабря 2014 10:39:56 AM

 Смежные вопросы

  • Нет связанных вопросов^_^