如何以 24 小时格式添加小时数
How to add hours to date in 24 hours format
例如,我想以 24 小时格式向结束日期添加 8 小时。
我尝试在第一行添加 + 8/24, 'DD-MM-YYYY HH24:MI:SS' 但这会出错。
这是我到目前为止的查询。
SELECT to_char(IN_ENDDATE, 'DD-MM-YYYY HH24:MI:SS')
INTO IN_END_DATE_STRING
FROM DUAL;
您的第一行将日期转换为字符串。然后您不能将 8/24 添加到它。转换前做加法:
SELECT to_char(IN_ENDDATE + 8/24.0, 'DD-MM-YYYY HH24:MI:SS')
INTO IN_END_DATE_STRING
FROM DUAL;
IN_ENDDATE 确实需要是日期类型才能使 +8/24
起作用。如果是时间戳,则将其添加为间隔:
IN_ENDDATE + INTERVAL '8' HOUR
出于以下几个原因,使用此表单可能更安全:
- 它适用于日期和时间戳
- 它更具可读性
如果 IN_ENDDATE 是非日期类型(例如 varchar),那么您的查询可以在没有 +8/24
的情况下工作,因为它在传递给 [= 之前已成功地从 varchar 隐式转换为 date 15=]。在这种情况下,请明确说明您的转换:
SELECT to_char(to_date(IN_ENDDATE, 'YYMMDD WHATEVER') + 8/24.0, 'DD-MM-YYYY HH24:MI:SS')
INTO IN_END_DATE_STRING
FROM DUAL
SELECT to_char(to_date(IN_ENDDATE, 'YYMMDD WHATEVER') + INTERVAL '8' HOUR, 'DD-MM-YYYY HH24:MI:SS')
INTO IN_END_DATE_STRING
FROM DUAL
或者将您的 IN_ENDDATE 参数设置为真正的日期类型
例如,我想以 24 小时格式向结束日期添加 8 小时。 我尝试在第一行添加 + 8/24, 'DD-MM-YYYY HH24:MI:SS' 但这会出错。
这是我到目前为止的查询。
SELECT to_char(IN_ENDDATE, 'DD-MM-YYYY HH24:MI:SS')
INTO IN_END_DATE_STRING
FROM DUAL;
您的第一行将日期转换为字符串。然后您不能将 8/24 添加到它。转换前做加法:
SELECT to_char(IN_ENDDATE + 8/24.0, 'DD-MM-YYYY HH24:MI:SS')
INTO IN_END_DATE_STRING
FROM DUAL;
IN_ENDDATE 确实需要是日期类型才能使 +8/24
起作用。如果是时间戳,则将其添加为间隔:
IN_ENDDATE + INTERVAL '8' HOUR
出于以下几个原因,使用此表单可能更安全:
- 它适用于日期和时间戳
- 它更具可读性
如果 IN_ENDDATE 是非日期类型(例如 varchar),那么您的查询可以在没有 +8/24
的情况下工作,因为它在传递给 [= 之前已成功地从 varchar 隐式转换为 date 15=]。在这种情况下,请明确说明您的转换:
SELECT to_char(to_date(IN_ENDDATE, 'YYMMDD WHATEVER') + 8/24.0, 'DD-MM-YYYY HH24:MI:SS')
INTO IN_END_DATE_STRING
FROM DUAL
SELECT to_char(to_date(IN_ENDDATE, 'YYMMDD WHATEVER') + INTERVAL '8' HOUR, 'DD-MM-YYYY HH24:MI:SS')
INTO IN_END_DATE_STRING
FROM DUAL
或者将您的 IN_ENDDATE 参数设置为真正的日期类型