我的数据库表中有一个时间戳(6)列。我想对其进行比较,但不考虑秒部分。我知道我可以 trunc(timestamp) 删除时间并保留日期部分。有没有办法可以将秒数设置为 0?
我想做这个:
CASE WHEN ARR NOT BETWEEN FROM AND TO THEN 1
ELSE 0 END "mismatch"
..但是当
ARR
不匹配时有一个大于 FROM
的秒部分和 TO
.我不在乎秒,只想考虑分钟。非常感谢任何建议。
谢谢
最佳答案
trunc()
function允许您通过可选的 fmt
决定丢弃多少精度范围;默认是删除所有时间分量,即等效于 trunc(x, 'DD')
.如果您只想丢失秒数,可以使用 MI
:
select systimestamp, trunc(systimestamp, 'MI') from dual;
SYSTIMESTAMP TRUNC(SYSTIMESTAMP,'MI')
----------------------------------- ------------------------
06-JAN-14 13.11.33.046920000 +00:00 2014-01-06 13:11:00
请注意,从
trunc
返回的值现在是 DATE
,不是 TIMESTAMP
.如果这是一个问题 - 这很可能不是 - 您可以将其退回:select systimestamp, cast (trunc(systimestamp, 'MI') as timestamp) from dual;
SYSTIMESTAMP CAST(TRUNC(SYSTIMESTAMP,'MI')ASTIMESTAMP)
----------------------------------- -----------------------------------------
06-JAN-14 13.14.43.270506000 +00:00 2014-01-06 13:14:00.000
关于sql - 没有秒的 oracle 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20950662/