java.sql.Timestamp到微秒(精确到微秒)

时间:2019-03-21 16:43:27

标签: java sql scala jdbc timestamp

我已经查看了here中的问题及其解决方案,但看起来解决方案来自2013年,我正在寻找比这更好的解决方案。

如何精确地将DateTime(TimeStamp)从Oracle转换为Long,直到微秒?

用于。例如: 来自Oracle的时间戳为:“ 2018-10-31 14:30:12.123456”。我需要将其转换为Long:1541010612123456。

I/P: "2018-10-31 14:30:12.123456" // String
O/P: 1541010612123456 // Long

我尝试过

java.sql.Timestamp.valueOf("2018-10-31 14:30:12.123456").getTime

但这可以使我精确到毫秒:1541010612123

要解决这个问题,我尝试了类似的方法,该方法可以正常工作,但不确定是否是一个好的解决方案。

val timeStamp = java.sql.Timestamp.valueOf("2018-10-31 14:30:12.123456").toInstant
val requiredLong = (timeStamp.getEpochSecond.toString + (timeStamp.getNano/1000).toString).toLong

任何更好的建议或解决方案。

1 个答案:

答案 0 :(得分:1)

您可以使用TimeUnit进行此转换:

Instant instant = java.sql.Timestamp.valueOf("2018-10-31 14:30:12.123456").toInstant();  
long micros = TimeUnit.SECONDS.toMicros(instant.getEpochSecond()) + TimeUnit.NANOSECONDS.toMicros(instant.getNano());