我們有時間存儲在Oracle varchar(5)字段中。在varchar字段中增加Oracle時間一定量?
使用HH24:MI(即:22:30,10:15)存儲的時間。
我們該如何運行一個查詢,將這些時間增加或減少一定量?即:增加一小時或減少45分鐘。
我們有時間存儲在Oracle varchar(5)字段中。在varchar字段中增加Oracle時間一定量?
使用HH24:MI(即:22:30,10:15)存儲的時間。
我們該如何運行一個查詢,將這些時間增加或減少一定量?即:增加一小時或減少45分鐘。
你可以使用內置的日期(和interval - 感謝Alex的鏈接)計算:
to_char(to_date(:x, 'hh24:mi') + INTERVAL :y MINUTE,'hh24:mi')
例如:
SQL> WITH my_data AS (
2 SELECT '12:15' t FROM dual
3 UNION ALL SELECT '10:30' FROM dual
4 )
5 SELECT t,
6 to_char(to_date(t, 'hh24:mi') + INTERVAL '15' MINUTE,'hh24:mi')"t+15"
7 FROM my_data;
T t+15
----- -----
12:15 12:30
10:30 10:45
輝煌!看起來關鍵字'HOUR'除了'MINUTE'外還有效# – 2011-03-31 14:33:13
@Marcus間隔更多[here](http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements003.htm #i38598)。 – 2011-03-31 14:42:26
的功能自/至日期轉換和char是TO_DATE()
和TO_CHAR()
:
SELECT
TO_DATE('31/12/2001 23:55:00', 'DD/MM/YYYY HH24:MI:SS') AS "DATE",
TO_CHAR(CURRENT_TIMESTAMP, 'DD/MM/YYYY HH24:MI:SS') AS "CHAR"
FROM DUAL
所以,你可以這樣做:
SELECT
TO_DATE('23:45', 'HH24:MI'),
TO_DATE('23:45', 'HH24:MI') + INTERVAL '45' MINUTE,
TO_CHAR(TO_DATE('23:45', 'HH24:MI') + interval '45' MINUTE, 'HH24:MI')
FROM DUAL
有可能是其他更好的方法來做到這一點(我不知道這會按預期如果在DST約RAN開始),但我還在學習:)
什麼是'23:45 + 45'應該是? '24:30'還是'00:30'? – 2011-03-31 14:23:11
我想這種情況不會存在。但如果它 - 00:30 – 2011-03-31 14:26:02