如何将ISO-8601时间戳转换为MySQL DATETIME?

4

我搜索了这个转换并找到了相反的结果。

我正在使用 Graph API 拉取 Facebook 页面的动态,并且它给出的日期格式是 iso-8601。

我需要将其转换为 MySQL 时间戳以便添加到我的数据库中。大多数搜索结果都提供了从 MySQL 到 iso 的转换。

我能直接进行转换吗,还是必须要先转换成 Unix 格式再转换成 MySQL 格式之类的操作?


此外,在图形 API 调用中指定要返回 Unix 时间,可以使您的生活更简单。http://developers.facebook.com/docs/reference/api/ #dates - Andrew Samuelsen
2个回答

4

我需要解析的格式在https://en.wikipedia.org/wiki/ISO_8601中描述为此样本:2017-09-20T18:12:02 + 00:00 为了解析这个,我将冒号添加到时区掩码中:'%Y-%m-%dT%H:%i:%s+00:00' - Rodrigo

2
SELECT STR_TO_DATE( '2012-06-25T20:05:13+0000', '%Y-%m-%dT%H:%i:%s+0000' ) 

这适用于时区设置为+0000的日期(这是FB Graph API通常返回的内容)。

如果您需要转换带有除+0000以外时区的日期时间,可以首先拆分日期字符串,对第一部分执行STR_TO_DATE,然后使用DATE_ADD添加第二部分中指定的偏移量。


这是一个选择语句,对吧。我需要使用PHP将ISO-8601日期格式转换为可保存在MySQL日期时间戳中的格式。 - Fabian Glace
“这是一个选择语句,对吧。”——你真是个鹰眼,什么都瞒不过你……“我需要使用PHP格式化ISO-8601日期格式以便保存到MySQL日期时间戳中。”——你可以把该函数插入到SQL查询语句中,并动态地将日期字符串插入其中。 - CBroe
2
@Cbroe 建议您在INSERT查询中使用STR_TO_DATE函数,让MySQL将ISO时间字符串转换为其内部格式。请注意,您可能希望在插入其中一个+0000日期之前立即执行此MySQL语句,以便时区偏移对FB提供的这些UTC时间正确。 SET time_zone='+00:00' - O. Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接