在 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 說明了什么?
uj5u.com熱心網友回復:
在 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 運行了該查詢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486127.html
