我有V_Date(YYYYMMDD)和V_Time(HHMISS)字段。
问题是格式时间不是在HH24中,而是30小时。
数据为: 20180307 和 313025
基于上述数据,我想正常转换为 20180308 和 073025 因此,我可以像下面的sql那样转换为时间戳:
SELECT TO_DATE('20180308073025', 'YYYYMMDDHH24MISS') FROM DUAL
答案 0 :(得分:1)
您可以将时间值添加到日期值。但是在您必须将时间值转换为秒数之前。在Oracle中,一天的值为1。半天(12小时)为0.5,一秒为1 /(24 * 60 * 60)。
这是一个例子:
WITH DS AS (
SELECT 313025 AS V_TIME,
20180307 AS V_DATE
FROM DUAL
)
SELECT (TO_NUMBER(SUBSTR(V_TIME, 1, 2)) * 3600
+ TO_NUMBER(SUBSTR(V_TIME, 3, 2)) * 60
+ to_number(substr(v_time, 5, 2))) / (24 * 60 * 60)
+ TO_DATE(TO_CHAR(V_DATE), 'YYYYMMDD') AS YOUR_DATE
FROM DS
;
希望有帮助。
答案 1 :(得分:0)
要将时间转换为秒,例如“ 140:05:10”,可以使用以下代码:
SELECT (REGEXP_SUBSTR('140:05:10','[^:]+',1,1)*3600 ) +
(REGEXP_SUBSTR('140:05:10','[^:]+',1,2) * 60) +
(REGEXP_SUBSTR('140:05:10','[^:]+',1,3)) sec from DUAL;
output = 504310