繁体   English   中英

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是一个返回日期时间组件的函数。 两个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM