首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更好的方法安全地将UTC时间值插入到mySQL时间戳变量中?

问更好的方法安全地将UTC时间值插入到mySQL时间戳变量中?
EN

Stack Overflow用户
提问于 2015-05-05 11:53:17
回答 1查看 9.9K关注 0票数 5

我的应用程序希望将时间戳值插入mySQL数据库中的时间戳变量。时间戳值是通常的“YYYY:MM:SS”格式的UTC时间。问题是我的SQL server被设置为使用系统时(SELECT @@global.time_zone说是SYSTEM),系统时区是欧洲/伦敦(服务器运行Ubuntu14.04),所以mySQL进行夏时制转换,并将值存储在离应该的值一小时的地方。(我想如果我在另一个时区,例如CST,那么我就会有一个不必要的时区偏移以及夏令节约时间)。

为了让mySQL做正确的事情,在插入UTC时间戳之前,我似乎需要将它转换为系统时间,以便mySQL可以将它从系统时间转换为UTC时间,然后在内部存储它。这段代码具有预期的效果:

代码语言:javascript
复制
mysql> select timestamp("2015-05-06 12:34:56")+CURRENT_TIMESTAMP-UTC_TIMESTAMP;
代码语言:javascript
复制
+------------------------------------------------------------------+
| timestamp("2015-05-06 12:34:56")+CURRENT_TIMESTAMP-UTC_TIMESTAMP |
+------------------------------------------------------------------+
|                                            20150506133456.000000 |
+------------------------------------------------------------------+

我现在要讨论这个问题,但这似乎有点离谱,那么还有更好的方法吗?

编辑下一轮的RTFM‘’ing给了我这个想法..。

代码语言:javascript
复制
mysql> select CONVERT_TZ("2015-05-06 12:34:56", "+00:00", "SYSTEM");
代码语言:javascript
复制
+-------------------------------------------------------+
| CONVERT_TZ("2015-05-06 12:34:56", "+00:00", "SYSTEM") |
+-------------------------------------------------------+
| 2015-05-06 13:34:56                                   |
+-------------------------------------------------------+

看起来干净多了。有更好的主意吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-05 12:08:25

您可能可以使用CONVERT_TZ函数,它使用指定的时区来解析日期,而不是系统时区:

代码语言:javascript
复制
SELECT CONVERT_TZ('2015-05-06 12:34:56','+00:00','SYSTEM') AS `Local Time`,
       UNIX_TIMESTAMP(CONVERT_TZ('2015-05-06 12:34:56', '+00:00', 'SYSTEM')) AS `UNIX Timestamp`;
代码语言:javascript
复制
+---------------------+----------------+
| Local Time          | UNIX Timestamp |
+---------------------+----------------+
| 2015-05-06 17:34:56 |     1430915696 |
+---------------------+----------------+

根据运行查询的系统,本地时间值将有所不同。但是,UNIX时间戳值将是相同的。

然后,您可以在时间戳列中插入本地时间值;MySQL将在转换后存储该值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30052225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档