
[英]Equivalent of ORACLE QUERY with bind variable IN 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
是一个返回日期和时间组件的函数。 两个DATE
数据类型值的差异返回它们之间的天数。 因此,由于SYSDATE
还包含小时、分钟和秒,您几乎总是会得到一个十进制数作为结果(除非您在午夜运行那段代码)。
因此,我假设您 - 实际上 - 想要截断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 运行了该查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.