我有一个简单的数据库表,其中包含一个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: