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,不适之处尽情谅解。