是否有可能将mysql TIMESTAMP与毫秒进行比较?

时间:2010-01-29 23:32:39

标签: mysql timestamp

由于太难以理解的原因,我有一个特定时间的毫秒表示,我有一个填充了mySql时间戳的mysql数据库,我很好奇是否可以在sql中进行本机比较,例如{ {1}}或类似的东西。

我一直在进行一些测试,结果非常奇怪。它没有抱怨,但返回的行不符合标准。

提前致谢。

[编辑] 好吧,如果在mySql中使用毫秒是不起作用的,那么比较日期的最佳方法是什么,假设我是以毫秒开始并且是在java中。

4 个答案:

答案 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),它也是   可查询,就好像它是一个时间戳   但为什么不能存储   DATETIMETIMESTAMP字段?

答案 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/