sql - 没有秒的 oracle 时间戳

标签 sql oracle oracle10g

我的数据库表中有一个时间戳(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/

相关文章:

mysql - 在MySQL中,如何查询 "last inserted row equals"?

c# - 存储在 oracle 中的 GUID/RAW 几乎匹配,除了最后 4 个字符

database - apex 如何从一个应用程序中的链接登录到另一个应用程序?

oracle - 顶点 : Call JavaScript function after validation but before processing

linux - ORA-01034 : ORACLE not available ORA-27101: shared memory realm does not exist ORACLE 10g XE

Sqlite 查询 - 我如何选择前任?

mysql - SQL:创建具有两个索引的表

sql - 如何在名称取自另一个表的表上执行 sql 查询

sql - 从年、月和日创建日期

sql - 列出列的所有不同值及其计数