Mysql Convert_tz

Я пытаюсь преобразовать дату и время из Азии / Манилы в часовой пояс EST без указания точного интервала, напримерdate_sub(), subdate(), date_add(), adddate()

я нахожу это простым в использовании
SELECT DATE_SUB('2016-04-04 13:00:00', INTERVAL 12 HOUR);
результат будет2016-04-04 01:00:00

Но я пытаюсь создать динамический скрипт, где мне не нужно смотреть, сколько часов разница между двумя часовыми поясами
и я нахожу Convert_TZ() делать работу
SELECT CONVERT_TZ('2016-04-04 13:00:00', 'Asia/Manila', 'EST');
но результат этого запроса 2016-04-04 00:00:00Может быть, эта нативная функция не включает "Летнее время"

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

Спасибо

1 ответ

Хорошо, моя проблема решена, я использую два варианта

Во-первых: я просто использую 'US/Eastern', а не 'EST', чтобы включить дневной свет в конверсию.

Во-вторых:

Поскольку я не знал первый вариант ранее, я делаю это, чтобы сначала решить свою проблему.

Я создаю таблицу, которая составляет дату, когда это DST, который я нашел на каком-то сайте в Интернете..

введите описание изображения здесь
затем
Я создаю функцию mysql, где ее поиск в таблице выше
который, если указанная дата находится между тем началом DST и концом DST, это автоматически добавит 1 час,

Моя функция такая, CREATE FUNCTION usp_Convert(specified_date DATETIME, From_Timezone VARCHAR(20), To_Timezone VARCHAR(20), is_DST INT(1)) RETURNS datetime

DECLARE theDate DATETIME;
SET theDate = CONVERT_TZ(specified_date, From_Timezone, To_Timezone);

IF is_DST = 1 AND To_Timezone= 'EST' THEN
SET theDate = ADDDATE(theDate, INTERVAL 1 HOUR);
END IF;
RETURN theDate;

Это может быть не лучшим ответом, но это полностью решило мою проблему

Благодарю.

Другие вопросы по тегам