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
。
有人能帮助我吗?
由于
答案 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?
如果您需要了解如何检查/设置时区。