如何将UNIX TIME转换为SQL datetime格式

时间:2014-02-05 05:47:12

标签: mysql sql datetime timestamp

select COUNT(DISTINCT devices) AS "Devices" from measure_tab where 
  measure_tab.time >= 1375243200 and 
  measure_tab.time < 1375315200;

上面的sql查询的输出给出了一个表,其中包含一个名为“Devices”的列,其中包含多个设备。我希望时间是measure_tab的一个属性也应该显示在输出表的另一列中,UNIX TIME在此查询中为1375243200,转换为SQL日期时间格式Thu Aug 1 00:00:00 UTC 2013

有人能帮助我吗?

由于

4 个答案:

答案 0 :(得分:5)

您可以使用以下功能:

select FROM_UNIXTIME(UNIX_TIMESTAMP(),'%a %b %d %H:%i:%s UTC %Y');

输出将是:

'Wed Feb 05 05:36:16 UTC 2014'

在您的查询中

select COUNT(DISTINCT devices) AS "Devices",
  FROM_UNIXTIME(measure_tab.time,'%a %b %d %H:%i:%s UTC %Y') as d from measure_tab where 
  measure_tab.time >= 1375243200 and 
  measure_tab.time < 1375315200;

有关详细信息,请查看文档:{​​{3}}

你可以看到sql fiddle:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_from-unixtime

答案 1 :(得分:3)

在Mysql中,您可以使用from_unixtime()函数将unix时间戳转换为Date

select COUNT(DISTINCT devices) AS "Devices" from measure_tab where 
  measure_tab.time >= from_unixtime(1375243200) and 
  measure_tab.time < from_unixtime(1375315200);

答案 2 :(得分:1)

您可以在FROM_UNIXTIME内使用DATE_FORMAT,但幸运的是, FROM_UNIXTIME也接受格式字符串,因此您可以使用它 本身

喜欢这个

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),'%​​Y%D%M%h:%i:%s%x')

DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')
DATE_FORMAT(NOW(),'%m-%d-%Y')
DATE_FORMAT(NOW(),'%d %b %y')
DATE_FORMAT(NOW(),'%d %b %Y %T:%f')

答案 3 :(得分:0)

如其他答案所述,FROM_UNIXTIME是您正在寻找的功能。请注意,这隐含地考虑了运行MySQL的计算机上的本地时区设置。

这里有很多有用的信息:

Should MySQL have its timezone set to UTC?

如果您需要了解如何检查/设置时区。