Oracle日期與時間拼接函數以及時間處理函數- -乾貨
1.時間處理函數
在工作過程中是否有遇到源數據的時間存儲爲Integer類型的時間格式,如下:
序號 | T_TIME_1 |
---|---|
1 | 63272 |
2 | 55066 |
3 | 55975 |
4 | 31394 |
5 | 42465 |
6 | 56309 |
7 | 37965 |
8 | 30757 |
9 | 37018 |
10 | 30092 |
通過下面的這個函數
CREATE OR REPLACE FUNCTION DATE_SPLICING_SECEND (SECONDS INTEGER)RETURN VARCHAR2 AS
V_SECONDS VARCHAR2(100):= SECONDS;
BEGIN
IF (V_SECONDS < 24 * 3600)
THEN
RETURN TO_CHAR(TO_DATE(MOD(V_SECONDS, 3600 * 24), 'sssss'), 'hh24":"mi":"ss');
ELSE
RETURN TRUNC(SECONDS / 3600 / 24) || '天' ||
TO_CHAR(TO_DATE(MOD(V_SECONDS, 3600 * 24), 'sssss'), 'hh24":"mi":"ss');
END IF;
END DATE_SPLICING_SECEND;
則可變爲如下效果:
序號 | T_TIME_1 | TIME_1 |
---|---|---|
1 | 63272 | 17:34:32 |
2 | 55066 | 15:17:46 |
3 | 55975 | 15:32:55 |
4 | 31394 | 08:43:14 |
5 | 42465 | 11:47:45 |
6 | 56309 | 15:38:29 |
7 | 37965 | 10:32:45 |
8 | 30757 | 08:32:37 |
9 | 37018 | 10:16:58 |
10 | 30092 | 08:21:32 |
2.日期與時間的拼接函數
拼接前:
序號 | T_DATE | T_TIME |
---|---|---|
1 | 2019/1/28 | 07:49:06 |
2 | 2020/4/21 | 15:01:16 |
3 | 2019/1/24 | 09:25:53 |
4 | 2019/1/11 | 08:59:59 |
5 | 2020/4/16 | 07:15:28 |
6 | 2019/2/24 | 15:54:26 |
7 | 2020/1/15 | 14:50:20 |
8 | 2019/1/5 | 3:23:40 |
9 | 2020/2/16 | 16:55:29 |
10 | 2019/1/10 | 8:29:53 |
拼接後:
序號 | T_DATE | T_TIME | DATE_TIME |
---|---|---|---|
1 | 2019/1/28 | 07:49:06 | 2019/1/28 7:49:06 |
2 | 2020/4/21 | 15:01:16 | 2020/4/21 15:01:16 |
3 | 2019/1/24 | 09:25:53 | 2019/1/24 9:25:53 |
4 | 2019/1/11 | 08:59:59 | 2019/1/11 8:59:59 |
5 | 2020/4/16 | 07:15:28 | 2020/4/16 7:15:28 |
6 | 2019/2/24 | 15:54:26 | 2019/2/24 15:54:26 |
7 | 2020/1/15 | 14:50:20 | 2020/1/15 14:50:20 |
8 | 2019/1/5 | 3:23:40 | 2019/1/5 13:23:40 |
9 | 2020/2/16 | 16:55:29 | 2020/2/16 16:55:29 |
10 | 2019/1/10 | 8:29:53 | 2019/1/10 8:29:53 |
實現函數:
CREATE OR REPLACE FUNCTION DATE_SPLICING(P_DATE DATE,
P_TIME VARCHAR) RETURN DATE AS
/* 聲明兩個變量存放日期和時間,返回值設置爲DATE類型 */
V_DATE DATE := P_DATE; --日期
V_TIME VARCHAR2(10) := P_TIME; --時間
BEGIN
IF V_DATE IS NOT NULL
THEN
RETURN TO_DATE(TO_CHAR(V_DATE, 'YYYY-MM-DD') || V_TIME, 'YYYY-MM-DD HH24:MI:SS');
ELSE
RETURN NULL;
END IF;
END DATE_SPLICING;
–本文是發表的第一篇Blog,不適之處盡情諒解。