MySql convert_tz函数不适用于时区代码

时间:2013-11-13 18:08:20

标签: mysql datetime

我有一个进程可以处理数据库中数据的作业调度。用户可以在设置作业的执行日期/时间时选择他们的时区。

我需要能够在用户的时区与服务器的时区之间进行转换。

我不想硬编码服务器的时区。请参阅下面的代码以查看我的问题。

我已经检查过时区表是否可用且有数据。

以下查询仅返回“EDT”:

select IF(@@session.time_zone = 'SYSTEM', @@system_time_zone, @@session.time_zone)

但我无法成功将EDT传回convert_tz。请通过以下查询来证明我的问题。

select schedule_time,
time_zone,
convert_tz(schedule_time,'US/Eastern','US/Pacific') 'convert_tz1',
convert_tz(schedule_time,'EST','PST') 'convert_tz2'
from batch_control

以下是返回:

2013-08-27 01:00:00    EST    2013-08-26 22:00:00    NULL
2013-08-26 01:00:00    EST    2013-08-25 22:00:00    NULL
2013-08-26 01:00:00    EST    2013-08-25 22:00:00    NULL
2012-09-28 15:22:00    EST    2012-09-28 12:22:00    NULL
2012-10-15 09:52:00    EST    2012-10-15 06:52:00    NULL

我很困惑为什么我不能从mysql本身获取时区值输出并将其传回convert_tz函数。

我的最终代码是这样的:

select convert_tz(schedule_time,time_zone,IF(@@session.time_zone = 'SYSTEM', @@system_time_zone, @@session.time_zone)) 'execute_time'
from batch_control 

0 个答案:

没有答案