我有一个表,其中在Oracle DB中有两个带有TimeStamp的字段。我必须计算Days中这两列之间的差异,包括时间戳记值。

Ex :- I have both column values as following than
Column1 value = 07-DEC-16 11.05.24.500000000 PM
Column2 value = 08-DEC-16 03.12.06.874000000 AM

Days Calculation应该显示为1。目前,在搜索并阅读了许多关于stackoverflow的问题之后,我才知道,现在我正在使用以下Query来计算这两列之间的差异
Select Extract( Day From Diff ) Days
From (Select B1.Column2 - B1.Column1 As Diff
From Table1 B1);

此查询导致计算的天数为0而不是1。

我没有要做什么,请引导。
我需要将其转换为其他格式吗?或者是其他东西 ?

最佳答案

如果您只是想要2016-12-072016-12-08之间的差异(忽略时间成分),则:

SELECT TRUNC( column2 ) - TRUNC( column1 ) AS days
FROM   table1

如果您希望将差额四舍五入到最接近的日期,那么(忽略小数秒),您可以执行以下操作:
SELECT CEIL( CAST( column2 AS DATE ) - CAST( column1 AS date ) ) AS days
FROM   table1

如果要包括小数秒并四舍五入到最近的日期,则:
SELECT CEIL(
         TRUNC( column2, 'MI' )
         - TRUNC( column1, 'MI' )
         + EXTRACT( SECOND FROM column2 ) / (24*60*60)
         - EXTRACT( SECOND FROM column1 ) / (24*60*60)
       ) AS days
FROM   table1

07-24 22:21