如果是甲骨文
查询
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 说明了什么?
在甲骨文中,SYSDATE
是一个返回日期的函数and时间成分。两者的区别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:正如我所说,它是days。为了快速演示它:如果你想获得小时数,你可以将其乘以 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>
这意味着您运行了该查询today05:28:10。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)