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

将日期时间字符串从PHP保存到MySQL,php,mysql,datetime,timezone,unix-timestamp,Php,Mysql,Datetime,Timezone,Unix Timestamp,好的,我有一个PHP中的日期时间字符串,格式为Y-m-dh:I:s。例如: '2013-07-01 00:04:37' 此外,我还有一个时区字符串,如: '-05:00' 我想将这两个字符串转换为整数(unix时间),然后将其存储在MySQL数据库中。你会怎么做 我知道给定一个字符串,您可以在PHP中获得unix时间,如下所示: date_create('2013-07-01 00:04:37')->getTimestamp(); 但是,您将如何调整它以使其符合正确的时区?另外,如何

好的,我有一个PHP中的日期时间字符串,格式为
Y-m-dh: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时间戳?

您可以添加时区;)

比如:

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

正如您在文档中看到的:

您可以使用mysql函数
CONVERT\u TZ()

CONVERT_TZ(dt,from_TZ,to_TZ)

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

例如:

选择CONVERT_TZ('2013-07-01 00:04:37'、'+00:00'、'-05:00')


这将输出
2013-06-30 19:04:37
您可以在INSERT语句中使用此函数

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

然后可以将该值保存在MySQL
int
列中,因为时间戳是有符号整数。有关这方面的更多信息,请参阅。你可以这样做

在表(时间戳,内容)中插入值(“您的时间戳”,“您的内容”)


将其插入到表中。

您是否考虑过
CONVERT\u TZ()
mysql函数?太棒了。如何将此时间戳存储到MySQL数据库中?
$timestamp=date\u create('2013-07-01T00:04:37-05:00')->getTimestamp()和<代码>插入到表值time='$timestamp'
和PDO/Mysqli扩展。。。你从来没这么做过O检查:您可以在mysql中将字段设置为timestamp;)你能给我举个例子
INSERT
语句吗?此外,存储日期的列应该属于哪个域?
插入T1(id,日期)值(NULL,CONVERT_TZ('2013-07-01 00:04:37','+00:00','-05:00')插入到T1(id,date)值中(NULL,CONVERT_TZ('2013-07-01 00:04:37','-05:00',(选择@@global.time_zone))。如何保存由您决定。我更喜欢datetime,但不总是这样(例如,当我需要用当前的时间戳更新collumns时)。若您想将系统中的-5:00时区转换为设置的时区,那个么您给出的代码就可以了。