我刚刚遇到一个问题,列的
data type
是varchar2(20)
该列包含
timestamp
,属于 varchar2(20)
。
我需要如何减去两个时间戳才能找到差异
表:
emp
-> dtime_details
dtime_details
2021-03-01 08:36:00
2021-03-01 17:40:00
预期产出:
9
(小时)
当
dtime_details
的数据类型为varchar2(20)
时,我需要如何编写查询
如果它的
data type
为 timestamp
,那么很容易,只需要在两者之间 minus
即可。
不要将日期和时间存储为字符串。将其存储为:
DATE
如果它有日期和时间部分(但没有小数秒);TIMESTAMP(0)
,如果它包含日期和时间组件(但没有小数秒)并且您希望将其视为 TIMESTAMP
而不是 DATE
;TIMESTAMP
如果有日期、时间和小数秒。如果您确实有一个字符串(没有),则将其转换为上述数据类型之一并减去:
SELECT TRUNC(
(
TO_DATE('2021-03-01 17:40:00', 'YYYY-MM-DD HH24:MI:SS')
- TO_DATE('2021-03-01 08:36:00', 'YYYY-MM-DD HH24:MI:SS')
) * 24
) AS hours_diff
FROM DUAL;
输出:
HOURS_DIFF |
---|
9 |