Oracle中如何将字段中的小时数添加至timestamp类型列
解决方案
针对你的需求——将HR列的小时数添加至timestamp类型的COLUMN_A列中,同时处理HR为空的情况(空值时保持原时间不变),以下是主流数据库的实现代码:
PostgreSQL
可以用INTERVAL结合COALESCE处理空值:
SELECT COLUMN_A, HR, COLUMN_A + INTERVAL '1 hour' * COALESCE(HR, 0) AS COLUMN_A_PLUS_HR FROM your_table_name;
或者用字符串拼接的方式:
SELECT COLUMN_A, HR, COLUMN_A + COALESCE(HR || ' hours', '0 hours') AS COLUMN_A_PLUS_HR FROM your_table_name;
MySQL
使用DATE_ADD和IFNULL函数:
SELECT COLUMN_A, HR, DATE_ADD(COLUMN_A, INTERVAL IFNULL(HR, 0) HOUR) AS COLUMN_A_PLUS_HR FROM your_table_name;
SQL Server
借助DATEADD和ISNULL实现:
SELECT COLUMN_A, HR, DATEADD(HOUR, ISNULL(HR, 0), COLUMN_A) AS COLUMN_A_PLUS_HR FROM your_table_name;
Oracle
用NUMTODSINTERVAL和NVL函数处理:
SELECT COLUMN_A, HR, COLUMN_A + NUMTODSINTERVAL(NVL(HR, 0), 'HOUR') AS COLUMN_A_PLUS_HR FROM your_table_name;
关键说明
- 各类
COALESCE/IFNULL/ISNULL/NVL函数的作用是:当HR列为空时,自动用0替代,避免因空值导致的计算错误 - 示例中保留了原COLUMN_A和HR列,同时生成新增小时后的结果列
COLUMN_A_PLUS_HR,你可以根据需求调整列名或直接更新原列
内容的提问来源于stack exchange,提问作者Chinu
相关产品推荐
相关产品推荐

