我正在看一个查询:
select JOB_ID from db where last_updated_date >= sysdate - 1/8
我看了ORACLE
SYSDATE
的文档,但不明白sysdate - 1/8
是什么意思。
请澄清。
在Oracle中,这意味着你减去了一天的1/8。因为一天有24小时,所以它的八分之一是24/8 = 3小时。所以:
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
Session altered.
SQL> select sysdate col1,
2 sysdate - 1/8 col2
3 from dual;
COL1 COL2
------------------- -------------------
29.10.2021 22:18:36 29.10.2021 19:18:36
SQL>
- 日期值保持不变(仍然是今天,29.10.2021)
- 时间已经改变;现在是22:18:36。当我们从中减去3小时,我们得到19:18:36(提前3小时)
这意味着您的查询获取last_updated_date
列值在最近3小时内的行。
它将从sysdate
中减去3小时(24小时/8),尝试运行以下命令:
select to_char((sysdate - 1/8), 'mm/dd/yyyy hh24:mi:ss') from dual
这将给出比数据库当前日期/时间早3小时的时间。