You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数值列作为小时数添加到日期时间列?SQL语句报错求助

解决SQL生成new_date列的语法错误问题

先明确你的表结构与数据:

datenumeric_datanew_date
2019-04-16 00:00:00.0112019-04-16 11:00:00.0
2019-04-15 00:00:00.0132019-04-16 13:00:00.0

你原SQL语句的问题在于interval的构造语法错误,不同数据库对时间间隔的处理语法有差异,以下是主流数据库的正确写法:

PostgreSQL

两种可行写法:

  • 拼接字符串后转换为interval类型:
select date + (numeric_data || ' hours')::interval as new_date from my_table;
  • 用基础时间间隔乘以数值:
select date + interval '1 hour' * numeric_data as new_date from my_table;

MySQL

直接使用INTERVAL关键字结合数值与单位,或用DATE_ADD函数:

-- 直接运算方式
select date + INTERVAL numeric_data HOUR as new_date from my_table;
-- DATE_ADD函数方式
select DATE_ADD(date, INTERVAL numeric_data HOUR) as new_date from my_table;

Oracle

可以用专用函数转换,或利用日期的数值特性计算:

  • 使用NUMTODSINTERVAL函数:
select date + NUMTODSINTERVAL(numeric_data, 'HOUR') as new_date from my_table;
  • 利用日期数值逻辑(Oracle中1代表1天,1小时等价于1/24):
select date + numeric_data/24 as new_date from my_table;

内容的提问来源于stack exchange,提问作者Mariam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:35:25