如何在MySQL中将时间戳转换为日期时间?


Answers:


200

FROM_UNIXTIME()在MySQL中使用功能

请记住,如果使用的框架以毫秒为单位存储(例如Java的时间戳),则必须除以1000,以秒为单位获取正确的Unix时间。


1
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )不起作用。为什么?使用v5.6
Janus Troelsen

3
@JanusTroelsen SELECT from_unixtime( unix_timestamp(TIMESTAMP( "2011-12-01", "22:01:23.048" ) ) )工作。TIMESTAMP()不返回整数值。
cnvzmxcvmcx 2014年

4
只是因为我这样做了,并在输出中感到困惑:MySQL将Unix时间存储在几秒钟内,而许多其他框架将其存储在毫秒内(即Java的时间戳)。因此,如果您要对来自使用毫秒的Unix时间的数据使用此功能,请记住除以1000。
克里斯·汤普森

64
DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%Y-%m-%d %H:%i:%s') as "Date" FROM `orders`

如果给定日期为编码格式(例如, 1300464000


3
谢谢你 包括时间: DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%d-%m-%Y %H:%i:%s') as "Date" FROM `orders`
JNP Web Developer

我很确定DATE_FORMAT(FROM_UNIXTIME(orderdate),'%Y-%m-%d')作为“ Date” FROM orders将是最终解决方案:D
凯尔(Kyle

14

回答Janus Troelsen评论

使用UNIX_TIMESTAMP代替TIMESTAMP

SELECT from_unixtime( UNIX_TIMESTAMP(  "2011-12-01 22:01:23.048" ) )

TIMESTAMP函数返回Date或DateTime而不是时间戳,而UNIX_TIMESTAMP函数返回unix时间戳


比较Unix时间和Unix时间似乎很清楚。我使用SELECT(CAST(DATE_FORMAT(from_unixtime(UNIX_TIMESTAMP(CURRENT_TIMESTAMP)),'%Y-%m-%d')作为DATE)<CAST('2019-05-02'AS DATE)); 为了比较日期,我用php替换了2019-05 * 02一个格式化的datetime对象。谢谢。
Mantisse

1
请不要以这种方式回答与原始问题不同的问题。
帕维尔Stankowski

这不能以任何方式回答原始问题
Nico Haase


3

SELECT from_unixtime( UNIX_TIMESTAMP(fild_with_timestamp) ) from "your_table"
这对我有用

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.