2011-03-23 52 views
5

如何大INT转换为日期如何大转换为int至今

输出示例:

name    due 
release   | 1300150800000000 

说明:

| name  | text  | NO | PRI | NULL |  | 
| due   | bigint(20) | YES |  | NULL |  | 
+1

如果你把它当作微秒纪元以来的:'的perl -e'打印标本地时间1300150800''你2011年3月15日 – Thilo 2011-03-23 03:42:38

+0

的日期应为每年2004-2007 2011。 – Efox 2011-03-23 03:43:40

+1

看看这个问题:http://stackoverflow.com/questions/4261684/how-to-decode-some-number-into-timedate – 2011-03-23 03:47:04

回答

14

看来它包含自1970-Jan-01 00:00:00am GMT微秒。

即将您的值转换为秒后,它给出1300150800,这相当于2011-Mar-15 01:00:00am GMT

因此,要将其转换为datetime,您可以在将其转换为秒(通过除以1000000)后使用MySQL的FROM_UNIXTIME(unix_timestamp, format)

SQL:

SELECT FROM_UNIXTIME(due/1000000, "%Y-%m-%d %H:%i:%s") AS due_date 
FROM MyTable; 

价:

+0

@efox,看来你是StackOverflow的新手。如果你有答案,请接受。 – 2011-03-28 04:20:28

+1

它出现FROM_UNIXTIME()会引入[Y2K38问题](http://stackoverflow.com/a/2012620/673991)。不知道是否有一个替代方案没有。否则(计算器敲击声音)BIGINT在9999年看起来不错,甚至数微秒。 – 2013-07-30 17:19:21

0

选择CAST从myTable的(FROM_UNIXTIME(END_TIME/1000)作为DATE);

输出:2015年3月1日