MySQL:将日期字符串转换为 Unix 时间戳
从数据库检索日期字符串时,遇到格式不一致的问题并不罕见,例如包含 AM 或 PM 后缀的时间戳。本文演示了如何有效地将这些日期字符串转换为 Unix 时间戳。
当前的具体问题是将“Apr 15 2012 12:00AM”格式的字符串转换为 Unix 时间戳。虽然使用 CONVERT(DATETIME, Sales.SalesDate, 103) 和 CONVERT(TIMESTAMP, Sales.SalesDate, 103) 的初始尝试可能不成功,但解决方案在于以下步骤:
步骤1:将日期字符串转换为DATETIME
首先,我们需要转换日期使用 STR_TO_DATE 函数将字符串转换为 DATETIME 对象。该函数需要两个参数:日期字符串和格式字符串。在这种情况下,格式字符串应与输入字符串的格式匹配(“%M %d %Y %h:%i%p”)。
STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p')
步骤 2:将 DATETIME 转换为 Unix Timestamp
一旦我们有了 DATETIME 对象,我们就可以使用以下方法将其转换为 Unix 时间戳UNIX_TIMESTAMP 函数。该函数以 DATETIME 对象作为参数,并返回相应的 Unix 时间戳。
UNIX_TIMESTAMP(SELECT STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p'))
按照以下步骤,我们可以成功将带有 AM 或 PM 后缀的日期字符串转换为所需的 Unix 时间戳格式。
其他格式注意事项
如果所需的输出格式与默认的Unix时间戳,我们可以使用FROM_UNIXTIME函数进一步处理它来调整格式。此函数采用两个参数:Unix 时间戳和新格式字符串。
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p')),'%m-%d-%Y %h:%i:%p')
此代码将 Unix 时间戳转换为格式为“mm-dd-yyyy hh:mm:ss”的日期字符串。
结论
通过了解如何将日期字符串转换为 DATETIME 对象然后是 Unix 时间戳,我们在 MySQL 中处理与日期相关的数据时获得了更大的灵活性。本文概述的技术提供了一种可靠且有效的方法来解决常见的格式问题并从日期字符串中提取有价值的信息。
以上是如何将带有 AM/PM 后缀的 MySQL 日期字符串转换为 Unix 时间戳?的详细内容。更多信息请关注PHP中文网其他相关文章!