【问题标题】:How to convert iso-8601 timestamp to MySQL DATETIME如何将 iso-8601 时间戳转换为 MySQL DATETIME
【发布时间】:2012-06-27 12:16:10
【问题描述】:

我搜索了这种转化,但发现了相反的结果。

我正在使用图形 api 提取 facebook 页面提要,它提供的日期格式是 iso-8601。

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

我可以直接转换还是必须转换为 unix 然后 mysql 或类似的东西。

【问题讨论】:

标签: mysql facebook datetime timestamp


【解决方案1】:

在你的更新语句中使用mysql函数STR_TO_DATE(str,format)

 UPDATE [table] SET [field] = STR_TO_DATE([your input date], '%Y-%m-%dT%H:%i:%s+0000');

STR_TO_DATE 函数接受 2 个参数 1) 您的日期字符串和 2) 输出格式,其格式可以与 mysql DATE_FORMAT() 相同,请参见: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

【讨论】:

  • 我需要解析的格式在en.wikipedia.org/wiki/ISO_8601 中描述为这个示例:2017-09-20T18:12:02+00:00 为了解析这个,我在时区中添加了一个冒号掩码:'%Y-%m-%dT%H:%i:%s+00:00'
【解决方案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 日期时间戳中
  • “这是一个正确的选择语句。” – 没有什么可以超越你,eagleeye ... “使用 php 我需要将 iso-8601 日期格式格式化为保存在 mysql 日期时间戳中” – 您可以将该函数放入您的 SQL 查询中,然后将日期字符串动态放入其中。
  • @Cbroe 建议您在 INSERT 查询中使用 STR_TO_DATE 函数,并允许 MySQL 将 ISO 时间字符串转换为其内部格式。请注意,您可能希望在插入这些 +0000 日期之一之前立即执行此 MySQL 语句,因此时区偏移对于 FB 提供给您的这些 UTC 时间是正确的。 SET time_zone='+00:00'
猜你喜欢
  • 2012-02-13
  • 2022-10-15
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
相关资源
最近更新 更多