由于太难以理解的原因,我有一个特定时间的毫秒表示,我有一个填充了mySql时间戳的mysql数据库,我很好奇是否可以在sql中进行本机比较,例如{ {1}}或类似的东西。
我一直在进行一些测试,结果非常奇怪。它没有抱怨,但返回的行不符合标准。
提前致谢。
[编辑] 好吧,如果在mySql中使用毫秒是不起作用的,那么比较日期的最佳方法是什么,假设我是以毫秒开始并且是在java中。
答案 0 :(得分:6)
你没有达到毫秒精度,但是在你的例子结尾处用零判断,你可能不需要它。
使用FROM_UNIXTIME将Unix时间戳转换为MySQL TIMESTAMP。看起来你有自Unix时代以来的毫秒数,所以只需将它们除以1000即可转换:
SELECT * FROM myTable WHERE time_stamp_column > FROM_UNIXTIME(1264665600000/1000);
您可能需要在此处调整时区/ DST问题,因为SQL时间戳完全是令人沮丧的当地时间。
答案 1 :(得分:3)
显然这是一个已知的错误:Bug 8523。见Once upon a timestamp(milliseconds)...
公平地说,MySQL确实如此 提供了一种保留毫米和米的方法 十进制字段中的微秒
DECIMAL(17,3)
,它也是 可查询,就好像它是一个时间戳 但为什么不能存储DATETIME
或TIMESTAMP
字段?
答案 2 :(得分:3)
不,遗憾的是,TIMESTAMP和DATETIME列不会以毫秒精度存储值。解决这个问题的方法是使用BIGINT列,并将时间戳设置为适当的毫秒位数,即。 1264808431000.不幸的是,这意味着您的应用程序或MySQL中的任何比较逻辑都必须基于BIGINT。
答案 3 :(得分:1)
如果你想在MySQL中使用这个功能,可以通过在MySQL官方日志上投票来让MySQL开发团队知道:
http://forge.mysql.com/worklog/task.php?id=946
http://blogs.mysql.com/peterg/2009/08/07/fractional-seconds-precision-in-mysql-datetime-data-types/