我有一个封闭的源应用程序,它在MySQL数据库中放置了一个13个字符的长时间戳.一个值是例如:
1277953190942
现在我遇到了问题,我必须编写一个sql语句,它将返回一个与特殊日期匹配的表的所有结果.
所以我有例如2010年7月1日,我将获得时间在01. July 2010 00:00:00至01. July 23:59:59之间的所有行.
我该如何编写这个sql语句?
select * from myTable where TIMESTAMP = ???
有谁知道这个?
最好的祝福.
最佳答案
这是一个具有毫秒精度的Unix timestamp,即自Unix epoch以来的毫秒数.因此,正确的陈述将是
select * from myTable where DATE(FROM_UNIXTIME(timestamp / 1000)) = DATE('2010-07-01');
请注意,查询不会很快,表中的每个值都必须转换为比较日期.一旦此查询开始出现问题(而不是之前的第二个),您可能希望使用一个方法,使用2个时间戳作为一天的开始和结束,这不需要太多的转换开销.我会把这作为锻炼留给渴望的人;)