确定两个纪元时间戳是否在oracle数据库中的同一日期的最佳方法

时间:2017-09-18 09:49:36

标签: sql oracle oracle11g database-performance

我有一个包含epoch时间戳列(transaction_date)的表,如果我有两行并且我想确定它们是否在同一天;没有使用to_date将它们转换为日期。我怎么能这样做,以及在确定它时减少操作的最佳方法是什么。

2 个答案:

答案 0 :(得分:1)

一个纪元“timestamp”是一个数字,它应该通过将日期转换为UTC(如果它有一个时区)而subtracting the epoch生成一个秒数(或毫秒)来生成历元。

如果不转换为日期,您可以除以一天中的秒数(或毫秒)并截断以获取自纪元以来的天数,然后比较这些值:

SELECT TRUNC( transaction_date / ( 24 * 60 * 60 ) ) FROM your_table

如果两行给出的值具有与该纪元相同的天数,那么它们就在同一天。

答案 1 :(得分:0)

使用从时间戳到日期的转换,您可以比较

SELECT 
        * (all but transaction_date), 
        (EXTRACT (DAY FROM (transaction_date))*24*60*60) transaction_day
FROM yourtable;