Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何以24小时格式向日期添加小时数_Sql_Database_Oracle_Plsql_Date Arithmetic - Fatal编程技术网

Sql 如何以24小时格式向日期添加小时数

Sql 如何以24小时格式向日期添加小时数,sql,database,oracle,plsql,date-arithmetic,Sql,Database,Oracle,Plsql,Date Arithmetic,例如,我想在24小时格式的enddate中添加8小时。 我尝试在第一行添加+8/24,'DD-MM-yyyyy 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/2

例如,我想在24小时格式的enddate中添加8小时。 我尝试在第一行添加+8/24,'DD-MM-yyyyy 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;
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确实需要是一个日期类型,以允许
+8/24
工作。如果是时间戳,则将其添加为间隔:

IN_ENDDATE + INTERVAL '8' HOUR
出于以下几个原因,使用此表单可能更安全:

  • 它对日期和时间戳都有效
  • 更具可读性
如果IN_ENDDATE是非日期类型(例如varchar),那么您的查询不需要
+8/24
,因为它在传递到
到_char
之前成功地从varchar隐式转换为date。在这种情况下,请明确说明您的转换:

SELECT to_char(IN_ENDDATE + 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') + 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参数设置为真正的日期类型

第一行将日期转换为字符串。然后不能向其添加8/24。在转换之前进行添加:

SELECT to_char(IN_ENDDATE + 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') + 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确实需要是一个日期类型,以允许
+8/24
工作。如果是时间戳,则将其添加为间隔:

IN_ENDDATE + INTERVAL '8' HOUR
出于以下几个原因,使用此表单可能更安全:

  • 它对日期和时间戳都有效
  • 更具可读性
如果IN_ENDDATE是非日期类型(例如varchar),那么您的查询不需要
+8/24
,因为它在传递到
到_char
之前成功地从varchar隐式转换为date。在这种情况下,请明确说明您的转换:

SELECT to_char(IN_ENDDATE + 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') + 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参数设置为真正的日期类型