datetime根据文档不起作用

时间:2015-03-23 13:22:24

标签: php mysql

我正在开发一个简单的数据库管理,日期时间类型,期望将时间转换为UTC以便存储&检索时转换回客户区的本地时间。

但它不是那样的。

我的查询在这里:

insert into table_name (date) values (now())

我现在的时间是:

2015-03-23 18:42:43 (local time, IST +5:30)

我期待2015-03-23 13:12:43在数据库中但不是这样,它只是存储相同而不是转换为UTC。

即使在检索它时,也只是提供存储在DB中的相同值。

有人能说出它是如何运作的吗?我不确定我的查询是否错误或是否存在令人困惑的事情?

2 个答案:

答案 0 :(得分:0)

IST比UTC早+5.30小时,因此在将数据IST时间存储到UTC时,您可能需要使用convert_tz功能。或者更好地将mysql服务器设置为UTC时区。

对于手动转换,它可以作为

mysql> select  convert_tz('2015-03-23 18:42:43','+00:00','-05:30') as utc;
+---------------------+
| utc                 |
+---------------------+
| 2015-03-23 13:12:43 |
+---------------------+
1 row in set (0.00 sec)

所以插入将是

insert into table_name 
(date) 
values 
(convert_tz(now(),'+00:00','-05:30'))

答案 1 :(得分:0)

在系统和MySQL上正确设置您的时区,您无需进行任何转换。

但是,DATETIME就像是拍摄本地时钟的照片,而TIMESTAMP就像记录当前时刻的UTC一样。

也就是说,在阅读DATETIME时,不同时区的某个人会看到您在时钟上看到的内容,但在阅读TIMESTAMP时会看到不同的值。