将日期时间字符串从PHP保存到MySQL

时间:2013-07-08 08:16:23

标签: php mysql datetime timezone unix-timestamp

好的,所以我在PHP中有Y-m-d H:i:s格式的日期时间字符串。例如:

'2013-07-01 00:04:37'

另外我有一个时区字符串,如:

'-05:00'

我想将这两个字符串转换为整数(unix时间),然后将其存储在MySQL数据库中。你会怎么做?

我知道给定一个字符串,你可以在PHP中获得如下的unix时间:

date_create('2013-07-01 00:04:37')->getTimestamp();

但是你会如何调整它以便它能够解释正确的时区?另外,如何在PHP中存储MySQL中的unix时间戳?

3 个答案:

答案 0 :(得分:2)

您可以使用mysql函数CONVERT_TZ()

CONVERT_TZ(dt,from_tz,to_tz)

  

CONVERT_TZ()将日期时间值dt从from_tz给定的时区转换为to_tz给定的时区,并返回结果值。

示例:

SELECT CONVERT_TZ('2013-07-01 00:04:37','+00:00','-05:00');

这会输出2013-06-30 19:04:37您可以在 INSERT 语句中使用此功能。

答案 1 :(得分:0)

您可以添加时区;)

类似的东西:

date_create('2013-07-01T00:04:37-05:00')->getTimestamp();

正如您在文档中看到的那样:http://es1.php.net/manual/en/datetime.construct.php

答案 2 :(得分:0)

将时间和日期转换为Unix时间戳时,会将其转换为一个整数,表示自1970年1月1日00:00 UTC以来的秒数。因此,如果您将时区输入到函数中以创建时间戳,它将调整秒数。

然后,您可以将此值保存在MySQL int列中,因为时间戳是有符号整数。有关详细信息,请参阅How should unix timestamps be stored in int columns?。你可以做点什么

INSERT INTO table (timestamp, content) VALUES ('your timestamp','your content');

将其插入您的表格。