我正在使用此查詢來獲取 oracle 中兩個日期之間的差異,結果應顯示天數、小時數、分鐘數我就是這樣做的
select r.created_date, r.updated_date, (r.updated_date - r.created_date) time from orders r;
結果是這樣的:-
[created_date] 01/01/20 07:00:00.000000000 PM
-------
[updated_date] 21/01/20 06:20:00.000000000 AM
------
[time] 19 11:20:00.000000
如何格式化 19 11:20:00.000000 以可讀的方式表示天數、小時數和分鐘數?例如:19 天 11 小時 20 分鐘如何為時間列設定別名?
謝謝。
uj5u.com熱心網友回復:
兩個時間戳相減的結果是區間資料型別,不能直接格式化。
您可以單獨提取每個組件,以避免重復可以在 CTE 中完成,例如:
with cte as (
select r.created_date, r.updated_date, (r.updated_date - r.created_date) time
from orders r
)
select cte.created_date,
cte.updated_date,
extract(day from cte.time) || ' days '
|| extract(hour from cte.time) || ' hours '
|| extract(minute from cte.time) || ' minutes'
as time
from cte;
| 創建日期 | UPDATED_DATE | 時間 |
|---|---|---|
| 01-JAN-20 19.00.00.000000000 | 21-JAN-20 06.20.00.000000000 | 19 天 11 小時 20 分鐘 |
資料庫<>小提琴
您已經展示了一個簡單的示例,但您可能希望包含小數分鐘,或者將秒甚至毫秒顯示為文本的單獨部分。我在小提琴中包含了幾個變體。
正如@WernfriedDomscheit 在評論中提到的,如果間隔是負數——這在像這樣比較創建/更新時不太可能,但仍然有用——所有提取的組件都是負數,如這個修改后的 db<>fiddle 所示。
您還可以使用 case 運算式跳過為零的組件,這可能會變得混亂。
uj5u.com熱心網友回復:
如果您的列具有TIMESTAMP資料型別,則:
select created_date,
updated_date,
EXTRACT(DAY FROM updated_date - created_date) || ' days '
|| EXTRACT(HOUR FROM updated_date - created_date) || ' hours '
|| EXTRACT(MINUTE FROM updated_date - created_date) || ' minutes '
|| EXTRACT(SECOND FROM updated_date - created_date) || ' seconds'
AS time
from orders;
如果您的列具有DATE資料型別,則使用類似的方法,但您必須將差異顯式轉換為INTERVAL DAY TO SECOND:
select created_date,
updated_date,
EXTRACT(DAY FROM (updated_date - created_date) DAY TO SECOND) || ' days '
|| EXTRACT(HOUR FROM (updated_date - created_date) DAY TO SECOND) || ' hours '
|| EXTRACT(MINUTE FROM (updated_date - created_date) DAY TO SECOND) || ' minutes '
|| EXTRACT(SECOND FROM (updated_date - created_date) DAY TO SECOND) || ' seconds'
AS time
from orders;
其中,對于樣本資料:
CREATE TABLE orders (
created_date TIMESTAMP,
updated_date TIMESTAMP
);
INSERT INTO orders VALUES (TRUNC(SYSTIMESTAMP-1), SYSTIMESTAMP);
輸出:
創建日期 UPDATED_DATE 時間 2021-10-30 00:00:00.000000 2021-10-31 16:37:08.952012 1 天 16 小時 37 分 8.952012 秒
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/346922.html
標籤:甲骨文
