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;
Это может быть не лучшим ответом, но это полностью решило мою проблему
Благодарю.