如何以24小时格式添加小时数

问题描述 投票:1回答:1

我想以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;
sql database oracle plsql date-arithmetic
1个回答
8
投票

您的第一行将日期转换为字符串。你不能再添加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的情况下工作,因为它在传递给to_char之前已成功从varchar隐式转换为日期。在这种情况下,要么明确说明您的转化:

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参数设置为真正的日期类型

© www.soinside.com 2019 - 2024. All rights reserved.