【问题标题】:SQL CURRENT_TIMESTAMP as Long?SQL CURRENT_TIMESTAMP 一样长吗?
【发布时间】:2019-04-07 06:51:20
【问题描述】:

我正在做类似的事情:

SELECT CURRENT_TIMESTAMP AS field1

在 SQL 中。然而,这是一个Timestamp 类型字段,有没有办法将它作为Long 获取?

【问题讨论】:

  • 那个长值代表什么(自纪元以来的秒数,自纪元以来的毫秒数,或自数据库系统使用的纪元以来)? CURRENT_TIMESTAMP 返回的 SQL TIMESTAMP 是一个日期+时间,而不仅仅是一个长值。要推导出长值,我们需要知道您需要什么值。

标签: java sql jdbc


【解决方案1】:

使用现代课程,不可怕Timestamp

OffsetDateTime odt = myResultSet.getObject( 1 , OffsetDateTime.class ) ;
long millisecondsFromEpoch = odt.toInstant().toEpochMilli() ;

【讨论】:

  • 有了那个“可怕的”Timestamp,您可以使用Timestamp.getTime(),而getObject(1, OffsetDateTime.class) 仅适用于TIMESTAMP WITH TIME ZONE 类型,不适用于TIMESTAMP (WITHOUT TIME ZONE) 类型(或至少仅适用于JDBC 4.2定义 OffsetDateTime 支持 java.sql.Types.TIMESTAMP_WITH_TIMEZONE 不支持 java.sql.Types.TIMESTAMP)。
【解决方案2】:

您可以使用 TimeStamp.getTime() 方法来获取结果。

示例: long timeStampLong = timeStamp.getTime();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 2013-12-30
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多