关于FROM_UNIXTIME的困惑
我正在运行MYSQL 4.1数据库,该数据库存储我们在欧洲运营的办事处的呼叫中心数据。关于FROM_UNIXTIME的困惑
我的MYSQL数据库位于Windows 2003服务器上,该服务器的时区设置为中欧时间,可自动调整为日光节约。
我希望能够生成一份报告,显示欧洲客户在正确时区的日志日期和时间。
我的数据库将呼叫的日志日期/时间存储为unix时间戳。所以,因此存储为UTC的日期。我发现MYSQL函数可以轻松地将日志日期时间调整到您选择的时区。
它叫做CONVERT_TZ。 (更多信息:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_convert-tz)
例子:SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','CET');
我试图将此呼叫已记录在2013年1月6日22:12
CONVERT_TZ(FROM_UNIXTIME(o.logdatex), 'UTC','CET') 'CET_L_DATETIME'
(logdatex是当unxtimestamp电话被记录)
我的困惑声明返回 - 2013-06-02 00:12:56。
我想看看,当我刚刚选择FROM_UNIXTIME(o.logdatex)
它返回正确的时间返回了什么! 2013-06-01 22:12:56(这个电话是从我们阿姆斯特丹办公室登录的)
我的问题是,FROM_UNIXTIME函数根据时区MYSQL服务器设置为什么自动调整UTC的时间?我找不到任何说明它的文档。
我的假设是因为当你做FROM_UNIXTIME(o.logdatex)
你从UTC转换到你的服务器的时区。 现在你的日期不在UTC时区。因此,在CONVERT_TZ(FROM_UNIXTIME(o.logdatex), 'UTC','CET')
中,您不会从'UTC'进行转换,而是从服务器的时区进行转换,因此您会得到一个奇怪的结果。 尝试选择FROM_UNIXTIME(o.logdatex)
作为查询中的单独字段并比较结果。
4.1?你为什么运行10年前的软件 – Strawberry
@Strawberry可能是一个错字,因为他提到了5.1手册...... –
@Strawberry感谢您的有用评论。 –