预言机中两个时间戳之间的差异(以天为单位),包括时间戳之间的差异



我有一个表,它有两个字段,在Oracle DB中带有时间戳。我必须以天为单位计算这两列之间的差异,包括时间戳值。

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

天数计算应显示为 1。目前,在进行搜索并阅读有关堆栈溢出的许多问题后,我开始知道,现在我使用以下查询来计算这两列之间的差异

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

最新更新