MySQL将日期字符串转换为Unix时间戳


137

如何将以下格式转换为Unix时间戳?

Apr 15 2012 12:00AM

我从数据库获得的格式似乎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

1
日期是否以文本形式存储在数据库中?
strnk 2012年

1
真的是MySQL问题吗?您的语法不建议这样做。
阿尔瓦罗·冈萨雷斯

1
似乎是关于MSSQL的问题。
Fedir RYKHTIK

Answers:


224

试试这个查询 CONVERT DATETIME to UNIX TIME STAMP

SELECT UNIX_TIMESTAMP(STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p'))

此查询 CHANGE DATE FORMATE

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')

1
谢谢。这works.This也可以在其他语句,如更新,删除,插入等使用
MR_AMDEV

1
如此多的试验解决方案为我工作后: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 %pSTR_TO_DATE
Damodar Bashyal

35

当然,您将必须同时使用STR_TO_DATE将日期转换为MySQL标准日期格式以及 UNIX_TIMESTAMP从中获取时间戳的功能。

根据您的日期格式,类似

UNIX_TIMESTAMP(STR_TO_DATE(Sales.SalesDate, '%M %e %Y %h:%i%p'))

将为您提供有效的时间戳。查看STR_TO_DATE文档以获取有关格式字符串的更多信息。


10

对于当前日期,只需UNIX_TIMESTAMP()在您的MySQL查询中使用即可。


1
不回答原始帖子中的问题。
埃文·多诺万

它适用于只需要在查询中转换当前日期,回答问题的一部分,不需要您看门的人Evan,人们已经投票赞成相同的方式来表明他们需
要这样做

原始问题要求转换为特定格式;这不是回答这个问题。如果您进行编辑以澄清这一点,我将取消。
伊万·多诺万

在第一行中已经明确指出这是当前日期。
stackMonk

我进行了编辑,以阐明此回答与原始问题的关系,并举一个例子。
伊万·多诺万

-5

来自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

1
这个答案是针对MSSQL的(尽管这个问题有些混乱)。
Salman A
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.