首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使MYSQL服务器中的UTC时间和单次时间相匹配?

问如何使MYSQL服务器中的UTC时间和单次时间相匹配?
EN

Stack Overflow用户
提问于 2014-09-19 23:54:54
回答 1查看 43关注 0票数 0

我有两个不同格式的时间戳。

一个是UTC字符串,如下所示:"2014-09-19T20:55:51Z"

另一个是一个unix时间戳,它看起来像这样:1411159809

这两个时间戳正好相隔五分钟。正如我用这个历代变换器工具所验证的那样。

我想把这两个时间戳(以及它们描述的数据)都放到我的数据库中,但当我这么做时,他们就不同意了。

我使用的桌子看起来是这样的:

代码语言:javascript
复制
+--------------+--------------+------+-----+---------------------+-----------------------------+
| Field        | Type         | Null | Key | Default             | Extra                       |
+--------------+--------------+------+-----+---------------------+-----------------------------+
| id           | int(11)      | NO   | PRI | NULL                | auto_increment              |
| property_key | int(11)      | YES  |     | NULL                |                             |
| updated_at   | timestamp    | NO   |     | CURRENT_TIMESTAMP   | on update CURRENT_TIMESTAMP |
| created_at   | timestamp    | NO   |     | 0000-00-00 00:00:00 |                             |
| value        | varchar(128) | YES  |     | NULL                |                             |
| name         | varchar(128) | YES  |     | NULL                |                             |
+--------------+--------------+------+-----+---------------------+-----------------------------+

作为询问,我有:

insert into events (value,property_key,created_at) values ('datapoints/56892923',273827,'2014-09-19T20:55:51Z')

和

insert into events (value,name,created_at) values ('240','HeartRate',FROM_UNIXTIME(1411159809))

当我从数据库中提取这些条目时,我得到的是:

代码语言:javascript
复制
*************************** 1. row ***************************
          id: 1
property_key: 273827
  updated_at: 2014-09-19 17:42:44
  created_at: 2014-09-19 20:55:51
       value: datapoints/56892923
        name: NULL
*************************** 2. row ***************************
          id: 2
property_key: NULL
  updated_at: 2014-09-19 17:43:09
  created_at: 2014-09-19 14:50:09
       value: 240
        name: HeartRate
2 rows in set (0.00 sec)

正如预期的那样,updated_at成为创建行的时间戳。困扰我的是,created_at是不同的六个小时。我猜MYSQL将UTC解释为当地时间,但这不是我想要的。我如何得到这些时间戳来表现我想要的样子?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-20 00:35:56

阅读FROM_UNIXTIME()手册

将unix_timestamp参数的表示形式返回为‘YYYY:MM:SS’或YYYYMMDDHHMMSS.uuuuuu格式的值,这取决于函数是用于字符串还是在数字上下文中使用。值在当前时区中表示。

另外,对于TIMESTAMP数据类型的定义:

MySQL将时间戳值从当前时区转换为UTC存储,并从UTC转换回当前时区进行检索。

因此,如果您使用的是TIMESTAMP列,那么您只需使用TZ_CONVERT来确保时间戳被格式化为UTC。

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

https://stackoverflow.com/questions/25943887

复制
相关文章

相似问题

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