Oracle 和 EDB (Postgres) 中的日期差异
Date Difference in Oracle And EDB (Postgres)
如果是 Oracle
查询
select SYSDATE - TO_DATE('23-03-1022','dd-mm-yyyy') from dual;
正在提供输出
SYSDATE-TO_DATE('23-03-1022','DD-MM-YYYY')
------------------------------------------
21715.2233
在 EDB/Postgres 的情况下是-
select SYSDATE - TO_DATE('23-03-1022','dd-mm-yyyy') as date;
date
---------------------
21715 days 05:23:13
(1 row)
如果是 Postgres,如何获得与 oracle 相同的输出?
对于 Oracle,.2233 说明了什么?
在 Oracle 中,SYSDATE
是 returns 日期 和 时间组件的函数。两个 DATE
数据类型值的差异 returns 它们之间的天数。因此,由于 SYSDATE
还包含小时、分钟和秒,因此您几乎总是会得到一个十进制数作为结果(除非您 运行 在午夜的那段代码)。
因此,我假设你 - 实际上 - 想要 t运行cate SYSDATE
然后“删除”时间组件(将其设置为 00:00:00):
SQL> select SYSDATE - TO_DATE('30-12-1899','dd-mm-yyyy') from dual;
SYSDATE-TO_DATE('30-12-1899','DD-MM-YYYY')
------------------------------------------
44715.3208
SQL> select trunc(SYSDATE) - TO_DATE('30-12-1899','dd-mm-yyyy') from dual;
TRUNC(SYSDATE)-TO_DATE('30-12-1899','DD-MM-YYYY')
-------------------------------------------------
44715
SQL>
截至 0.2279:如我所说,它是 天 的天数。快速演示一下:如果你想得到小时数,你可以将它乘以 24(其余部分乘以 60 得到分钟,其余部分再次乘以 60 得到秒):
SQL> select 0.2279 * 24 as hours from dual;
HOURS
----------`enter code here`
5.4696
SQL> select 0.4696 * 60 as minutes from dual;
MINUTES
----------
28.176
SQL> select 0.176 * 60 as seconds from dual;
SECONDS
----------
10.56
SQL>
这意味着您 运行 查询 今天 在 05:28:10.
如果是 Oracle 查询
select SYSDATE - TO_DATE('23-03-1022','dd-mm-yyyy') from dual;
正在提供输出
SYSDATE-TO_DATE('23-03-1022','DD-MM-YYYY')
------------------------------------------
21715.2233
在 EDB/Postgres 的情况下是-
select SYSDATE - TO_DATE('23-03-1022','dd-mm-yyyy') as date;
date
---------------------
21715 days 05:23:13
(1 row)
如果是 Postgres,如何获得与 oracle 相同的输出?
对于 Oracle,.2233 说明了什么?
在 Oracle 中,SYSDATE
是 returns 日期 和 时间组件的函数。两个 DATE
数据类型值的差异 returns 它们之间的天数。因此,由于 SYSDATE
还包含小时、分钟和秒,因此您几乎总是会得到一个十进制数作为结果(除非您 运行 在午夜的那段代码)。
因此,我假设你 - 实际上 - 想要 t运行cate SYSDATE
然后“删除”时间组件(将其设置为 00:00:00):
SQL> select SYSDATE - TO_DATE('30-12-1899','dd-mm-yyyy') from dual;
SYSDATE-TO_DATE('30-12-1899','DD-MM-YYYY')
------------------------------------------
44715.3208
SQL> select trunc(SYSDATE) - TO_DATE('30-12-1899','dd-mm-yyyy') from dual;
TRUNC(SYSDATE)-TO_DATE('30-12-1899','DD-MM-YYYY')
-------------------------------------------------
44715
SQL>
截至 0.2279:如我所说,它是 天 的天数。快速演示一下:如果你想得到小时数,你可以将它乘以 24(其余部分乘以 60 得到分钟,其余部分再次乘以 60 得到秒):
SQL> select 0.2279 * 24 as hours from dual;
HOURS
----------`enter code here`
5.4696
SQL> select 0.4696 * 60 as minutes from dual;
MINUTES
----------
28.176
SQL> select 0.176 * 60 as seconds from dual;
SECONDS
----------
10.56
SQL>
这意味着您 运行 查询 今天 在 05:28:10.