Oracle SQL查询将Unix时间戳转换为Java的日期

时间:2017-09-25 11:40:32

标签: java oracle

我们有一个表格,其中包含最后发布的Pages日期。但是字段类型是数字,而Page的LastPublished日期存储为UnixTimeStamp(13位数字)。 我想生成包含最新发布项目的报告(每天超过20页将发布)。

如果该字段是日期,那么我可以查询但它的数字格式。所以,请帮我生成报告。

样本表:

ID              Approved       Path                PublishedDate
----------------------------------------------------------------
206b50140aSTFL  approved       /LocaleFlags/Small  1502866591000
dc563a2db23RD   approved       /LocaleFlags/Small  1442230611000

1 个答案:

答案 0 :(得分:0)

假设您的时间戳以毫秒为单位(因为您说unix时间戳是13位数),则除以1000以获得自纪元以来的秒数,您可以使用NUMTODSINTERVAL将其更改为间隔,将其添加到纪元TIMESTAMP '1970-01-01 00:00:00'

SELECT TIMESTAMP '1970-01-01 00:00:00' + NUMTODSINTERVAL( PublishedDate / 1000, 'SECOND' )
FROM   your_table

但是,如果你只是想找到昨天的页面,那么convert that date to a unix timestamp

SELECT *
FROM   your_table
WHERE  PublishedDate BETWEEN ( TRUNC( SYSDATE ) - 1 - DATE '1970-01-01' ) * 24*60*60*1000
                         AND ( TRUNC( SYSDATE ) - DATE '1970-01-01' ) * 24*60*60*1000 - 1