将日期时间字符串从PHP保存到MySQL
好的,我有一个PHP中的日期时间字符串,格式为将日期时间字符串从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(); 但是,您将如何调整它以使其符合正确的时区?另外,如何
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以来的秒数。因此,如果在函数中输入时区以创建时间戳,它将调整秒数
然后可以将该值保存在MySQLint
列中,因为时间戳是有符号整数。有关这方面的更多信息,请参阅。你可以这样做
在表(时间戳,内容)中插入值(“您的时间戳”,“您的内容”)代码>
将其插入到表中。您是否考虑过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')我不理解你问题的另一部分。谢谢。另一部分的意思是“我应该将日期时间存储为日期时间值还是时间戳值?”我知道时间戳值在存储之前会从系统时区转换为UTC,反之亦然,然后再检索。在这种情况下,如何正确存储时间戳。我的思路是将插入到T1(id,date)值中(NULL,CONVERT_TZ('2013-07-01 00:04:37','-05:00',(选择@@global.time_zone))代码>。如何保存由您决定。我更喜欢datetime,但不总是这样(例如,当我需要用当前的时间戳更新collumns时)。若您想将系统中的-5:00时区转换为设置的时区,那个么您给出的代码就可以了。