MySQL将日期字符串转换为Unix时间戳
Posted
技术标签:
【中文标题】MySQL将日期字符串转换为Unix时间戳【英文标题】:MySQL convert date string to Unix timestamp 【发布时间】:2012-06-23 10:16:24 【问题描述】:如何将以下格式转换为 unix 时间戳?
Apr 15 2012 12:00AM
我从 DB 得到的格式最后似乎有 AM
。
我尝试使用以下方法,但没有成功:
CONVERT(DATETIME, Sales.SalesDate, 103) AS DTSALESDATE,
CONVERT(TIMESTAMP, Sales.SalesDate, 103) AS TSSALESDATE
where Sales.SalesDate value is Apr 15 2012 12:00AM
【问题讨论】:
日期是否以文本形式存储在数据库中? 真的是 mysql 的问题吗?你的syntax 不建议这样做。 看来问题是关于 MSSQL 的。 【参考方案1】:您当然必须使用STR_TO_DATE
将您的日期转换为 MySQL 标准日期格式,并使用UNIX_TIMESTAMP
从中获取时间戳。
鉴于您的日期格式,例如
UNIX_TIMESTAMP(STR_TO_DATE(Sales.SalesDate, '%M %e %Y %h:%i%p'))
会给你一个有效的时间戳。查看STR_TO_DATE
文档以获取有关格式字符串的更多信息。
【讨论】:
【参考方案2】:以下是如何将DATETIME
转换为 UNIX 时间戳的示例:SELECT UNIX_TIMESTAMP(STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p'))
以下是如何更改日期格式的示例: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_TIMESTAMP
, FROM_UNIXTIME
【讨论】:
谢谢。这行得通。这也可以用于其他语句,如更新、删除、插入等 经过这么多试验后,您的解决方案对我有用:select * from (SELECT order_increment_id, FROM_UNIXTIME(UNIX_TIMESTAMP(STR_TO_DATE(order_date, '%d %M %Y %h:%i:%s %p')),'%Y-%m-%d') as order_date, email_sent FROM `packingslip_header` where email_sent=0) t where order_date >= '2019-11-13' ORDER BY order_increment_id ASC
这是我拥有31 Oct 2017 4:16:49 pm
的日期,所以我需要使用%d %M %Y %h:%i:%s %p
作为STR_TO_DATE
【参考方案3】:
对于当前日期,只需在您的 MySQL 查询中使用 UNIX_TIMESTAMP()
。
【讨论】:
不回答原帖中的问题。 它适用于只需要在查询中转换当前日期、回答部分问题、不需要你的看门人埃文的人,人们已经投票表明他们需要这个跨度> 原问题要求转换特定格式;这不是在回答这个问题。如果您进行编辑以澄清这一点,我将取消反对票。 已在第一行明确说明这是针对当前日期的。 我进行了编辑以澄清此响应与原始问题的关系并举例说明。【参考方案4】:来自http://www.epochconverter.com/
SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())
My bad, SELECT unix_timestamp(time) Time format: YYYY-MM-DD HH:MM:SS or YYMMDD or YYYYMMDD. More on using timestamps with MySQL:
http://www.epochconverter.com/programming/mysql-from-unixtime.php
【讨论】:
这个答案是针对 MSSQL 的(虽然这个问题有些混乱)。以上是关于MySQL将日期字符串转换为Unix时间戳的主要内容,如果未能解决你的问题,请参考以下文章