没有秒的oracle时间戳

时间:2014-01-06 13:03:53

标签: sql oracle oracle10g

我的数据库中的表中有一个timestamp(6)列。我想对它做一个比较,但不考虑秒部分。我知道我可以截断(时间戳)来删除时间并保留日期部分。有没有办法可以将秒数设置为0?

我想这样做

CASE
  WHEN ARR NOT BETWEEN FROM AND TO THEN 1
  ELSE 0
END "mismatch"

但是当arr的秒部分大于FROM和TO时会出现不匹配。我不在乎秒,只想考虑分钟。

任何建议都非常感谢。

由于

1 个答案:

答案 0 :(得分:12)

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