我有一堆数据存储在mysql数据库中,作为一堆unix风格的时间戳(以utc格式)。以前,这些文件是通过perl的gmtime()格式化的。似乎mysql的FROM_UNIXTIME()函数试图提供帮助,并纠正日光节约,但我真的不希望它这样做。
有没有一种方便的方法可以将结果从系统时区(GMT/BST)转换为UTC,或者交替确定DST是否在特定时间内有效?

最佳答案

你试过了吗:

mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2011-04-04 22:54:13 |
+---------------------+
1 row in set (0.00 sec)

mysql> set @var = unix_timestamp(NOW());
Query OK, 0 rows affected (0.00 sec)

mysql> SET time_zone='+00:00';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2011-04-04 20:54:23 |
+---------------------+
1 row in set (0.00 sec)

mysql> SELECT FROM_UNIXTIME(@var);
+---------------------+
| FROM_UNIXTIME(@var) |
+---------------------+
| 2011-04-04 20:54:17 |
+---------------------+
1 row in set (0.02 sec)

如果您想使用命名时区,您可以查看this page了解更多信息,以及如何填写系统上的时区表。

10-07 16:07
查看更多