簡體   English   中英

Oracle:日期時間減法

[英]Oracle : Date time subtraction

我必須以分鍾為單位計算當前( sysdate )和修改后的時間的時差:-

to_date(to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS')
- to_date(to_char(modified, 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS')

但是問題是to_char返回正確的時間:

to_char(whenmodified, 'YYYY-MM-DD HH24:MI:SS')

輸出2016-05-23 14:55:50

並且to_date不顯示時間:-

to_date(to_char(modified, 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS')

產出: 2016-05-23

請協助通過將to_char轉換為to_date來獲得時差。

注意:

  1. 我無法進行sysdate-modified,因為sysdate和modified都給出了沒有時間的日期,例如2016-05-23

  2. 使用to_char作為sysdate或修改的給定日期與時間2016-05-23 14:55:50

  3. 由於我們無法在to_char函數中減去日期,因此我再次將其轉換回to_date以獲取時間。

我期望:2016-05-23 14:55:50-2016-05-23 14:53:50 = 2分鍾

我必須以分鍾為單位計算與當前(sysdate)和修改時間的時差

Oracle安裝程序

CREATE TABLE table_name ( modified DATE );

INSERT INTO table_name
SELECT TIMESTAMP '2016-05-23 14:20:00' FROM DUAL UNION ALL
SELECT TIMESTAMP '2016-05-23 00:00:00' FROM DUAL UNION ALL
SELECT TIMESTAMP '2016-05-01 00:00:00' FROM DUAL UNION ALL
SELECT TIMESTAMP '2016-01-01 00:00:00' FROM DUAL;

查詢

SELECT ( sysdate - modified ) * 24 * 60 AS minute_difference
FROM   table_name;

輸出

MINUTE_DIFFERENCE
-----------------
       3.66666667 
       863.666667 
       32543.6667 
       206783.667 

並發表您的評論:

to_date不顯示時間

日期始終具有時間成分,並且永遠不會在數據庫內部具有格式(由7或8個字節表示 )-日期的格式由用於訪問數據庫的客戶端程序完成(通常是默認格式)不是要顯示時間成分-但是,時間成分仍然存在)。

您可以在客戶端程序的首選項中更改此設置,或者如果不使用它來控制它,則可以通過更改NLS_DATE_FORMAT會話參數來進行更改:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM