我有一个表,它在 Oracle DB 中有两个带有时间戳的字段。我必须在 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
Run Code Online (Sandbox Code Playgroud)
天数计算应显示为 1。目前在搜索并阅读有关 stackoverflow 的许多问题后,我才知道,现在我正在使用以下查询来计算这两列之间的差异
Select Extract( Day From Diff ) Days
From (Select B1.Column2 - B1.Column1 As Diff
From Table1 B1);
Run Code Online (Sandbox Code Playgroud)
此查询导致计算的天数为 0 而不是 1。
我不明白要做什么,请指导。我需要将其转换为不同的格式吗?或者是其他东西 ?
如果您只想要与2016-12-07to的差异2016-12-08(忽略时间分量),则:
SELECT TRUNC( column2 ) - TRUNC( column1 ) AS days
FROM table1
Run Code Online (Sandbox Code Playgroud)
如果您希望将差异四舍五入到最近的一天,那么(忽略小数秒)您可以执行以下操作:
SELECT CEIL( CAST( column2 AS DATE ) - CAST( column1 AS date ) ) AS days
FROM table1
Run Code Online (Sandbox Code Playgroud)
如果您想包括小数秒并四舍五入到最近的一天,那么:
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
Run Code Online (Sandbox Code Playgroud)