时间戳和UTC毫秒之间的异常差异

时间:2016-07-28 19:02:30

标签: java mysql timestamp jodatime

我有一个简单的数据库表,其中包含一个BigInt和一个Timestamp字段。我将当前UTC毫秒插入数据库BigInt字段,而时间戳由mysql使用CURRECT_TIMESTAMP生成。我的SQL设置为UTC时区,我对这一切都是新手:)。

问题在于逻辑上时间戳和毫秒应该相同,但它们不是。我正在使用jodatime。

if(rs.next())
        {
            Long milliseconds = rs.getLong("milliseconds");
            Timestamp ts = rs.getTimestamp("timestamp");



            System.out.println("milliseconds = " + new DateTime(milliseconds, DateTimeZone.UTC ));
            System.out.println("milliseconds = " + milliseconds);

            System.out.println("timestamp raw = " + ts);    


            System.out.println("difference = " +( milliseconds - ts.getTime()));    

        }

这给了我:

milliseconds = 2016-07-28T18:17:35.748Z
milliseconds = 1469729855748
timestamp raw = 2016-07-28 18:17:36.12174
difference = 19799627

正如你所看到的毫秒和时间戳原始相同,但它们的差异给了我19799627.它甚至没有差别,但它表示存在巨大的差异。

所以我需要2 thinsg:

  1. 有些人如何匹配。我怎么能让两者相同呢?
  2. 如果更改了mysql时区并且我知道时区,我该如何转换Timestamp以匹配毫秒。 ?基本上不应该有超过一秒的差异,但我无法做到正确。请帮忙。

0 个答案:

没有答案