Oracle SYSDATE - 1/8 是什么意思?
What does Oracle SYSDATE - 1/8 mean?
我正在查看一个查询:
select JOB_ID from db where last_updated_date >= sysdate - 1/8
我浏览了 ORACLE
SYSDATE
文档,但无法理解 sysdate - 1/8
的含义。
请说明。
在 Oracle 中,这意味着您要减去一整天的 1/8。因为一天有 24 小时,它的 1/8 部分是 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 hours/8),尝试 运行 以下操作:
select to_char((sysdate - 1/8), 'mm/dd/yyyy hh24:mi:ss') from dual
这将使您比当前数据库 date/time 提前 3 小时。
我正在查看一个查询:
select JOB_ID from db where last_updated_date >= sysdate - 1/8
我浏览了 ORACLE
SYSDATE
文档,但无法理解 sysdate - 1/8
的含义。
请说明。
在 Oracle 中,这意味着您要减去一整天的 1/8。因为一天有 24 小时,它的 1/8 部分是 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 hours/8),尝试 运行 以下操作:
select to_char((sysdate - 1/8), 'mm/dd/yyyy hh24:mi:ss') from dual
这将使您比当前数据库 date/time 提前 3 小时。