Как конвертировать дату UTC в локальный часовой пояс в MySql Select Query
Я использую это Where Condition in One Из моего запроса с MySql Database.My Проблема в том, что у меня есть один столбец отображения в моей таблице, но в этом столбце таблицы отображаются данные в UTC Time.and я хочу преобразовать этот столбец отображения в Local Time Zone.so как я могу предоставить этот объект из самого запроса.
Я изучил вещи и тем самым знал, что для этого будет работать что-то вроде SELECT CONVERT_TZ()
. Но это не работает для меня.
Вот мой запрос, в котором мне нужно конвертировать displaytime в локальный часовой пояс... так может ли кто-нибудь мне направить?
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
SAmple DAtap >
![enter image description here]()
Ответы
Ответ 1
SELECT CONVERT_TZ() будет работать для этого. Но это не работает для меня.
Почему, какая ошибка вы получаете?
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
Ответ 2
В моем случае, когда часовые пояса недоступны на сервере, это отлично работает:
SELECT CONVERT_TZ(`date_field`,'+00:00',@@global.time_zone) FROM `table`
Примечание. global.time_zone использует часовой пояс сервера. Вы должны убедиться, что он имеет желаемый часовой пояс!
Ответ 3
select convert_tz(now(),@@session.time_zone,'+05:30')
заменить "+05: 30" на желаемый часовой пояс. см. здесь fooobar.com/info/24141/...
для форматирования в желаемый формат времени, например:
select DATE_FORMAT(convert_tz(now(),@@session.time_zone,'+05:30') ,'%b %d %Y %h:%i:%s %p')
вы получите схож с этим → 17 декабря 2014 10:39:56 AM