unix_timestamp()得到的时间无法和java当中得到的时间一样。
例:在mysql中查询中用select unix_timestamp( logentry_time), logentry_time  from log where logentry_id=1 limit 0,30
结果:1235061940   2009-02-19 16:45:40
大家都知道unix_timestamp()得到的是秒数,java用getTimes()得到的是毫秒
在java中试、
Date now=new Date(1235061940000l);
System.out.prinltn(now);
结果是Fri Feb 20 00:45:40 CST 2009
大家都看到了是差8个小时。但我又一次进行了测试。
select * from log where unix_timestamp( logentry_time) > 1235061939 and  unix_timestamp(logentry_time)< 1235407541   limit 0,30
这样应该能到得2009-02-19 16:45:40的值了吧。但是结果却是很多条数据。
本人希望mysql高手解说一下。如何才能得到这一条2009-02-19 16:45:40的记录.谢谢各位

解决方案 »

  1.   

    是的,java中得到的ms, 但unix标准是s, 所以很简单,你 java / 1000就行了。
      

  2.   

    你提供的数据有问题。1235061940 应该是 2009-02-20 00:45:401235061939 -> 2009-02-20 00:45:39
    1235407541 -> 2009-02-24 00:45:41
    这样当然得不到 2009-02-19 16:45:40 这个值的记录。2009-02-19 16:45:40 的UNIXTIMESTAMP = 1235033140
      

  3.   

    先说一楼的朋友,你看清我的问题了吗。我加了000了。你看清了再说好吗。
    再说一下二楼的朋友。UNIXTIMESTAMP()和北京时间差8个小时,难道你不知道吗?我一开始做测试了好不,看清了再回。
      

  4.   

     一楼二楼都是我。是的你的说法是正确的 UNIXTIMESTAMP 是以 UTC时间来的,有8小时时差。
    所以 
    1235061939 = 北京时间 2009-02-20 00:45:39 ->UTC 2009-02-19 16:45:39
    1235407541 = 北京时间 2009-02-24 00:45:41 ->UTC 2009-02-23 16:45:41
    select * from log 
    where unix_timestamp(logentry_time) > 1235061939 and  unix_timestamp(logentry_time) < 1235407541   
    order by logentry_time
    limit 0,30这个结果中应该包含从2009-02-19 16:45:39 到 2009-02-23 16:45:41 的记录,包含 2009-02-19 16:45:40的值 ,  
    你现在的结果是什么样?这个记录没有包含? 用上面的排一下序