如何在SQL中基于日期与天数字段计算生成到期日期?
问题描述
现有一张包含以下字段的表:
| date | date_add |
|---|---|
| 2022-08-01 | 5 |
| 2022-08-01 | 3 |
需要通过SQL查询生成新字段due_date,取值为date字段的日期加上date_add字段的天数,得到如下结果:
| date | date_add | due_date |
|---|---|---|
| 2022-08-01 | 5 | 2022-08-06 |
| 2022-08-01 | 3 | 2022-08-04 |
解决方案
不同数据库系统的日期加法语法略有差异,以下是主流数据库的实现方式:
MySQL/MariaDB
可以使用DATE_ADD()函数,或者更简洁的+ INTERVAL语法:
SELECT date, date_add, DATE_ADD(date, INTERVAL date_add DAY) AS due_date FROM your_table_name;
简洁写法:
SELECT date, date_add, date + INTERVAL date_add DAY AS due_date FROM your_table_name;
PostgreSQL
通过拼接字符串转换为INTERVAL类型后相加,或者使用make_interval()函数:
SELECT date, date_add, date + (date_add || ' days')::INTERVAL AS due_date FROM your_table_name;
使用函数的写法:
SELECT date, date_add, date + make_interval(days => date_add) AS due_date FROM your_table_name;
SQL Server
使用DATEADD()函数指定天数偏移:
SELECT date, date_add, DATEADD(DAY, date_add, date) AS due_date FROM your_table_name;
Oracle
Oracle支持日期直接与整数相加(整数代表天数):
SELECT date, date_add, date + date_add AS due_date FROM your_table_name;
SQLite
通过DATE()函数拼接天数参数实现:
SELECT date, date_add, DATE(date, '+' || date_add || ' days') AS due_date FROM your_table_name;
注意:将上述代码中的your_table_name替换为你实际的表名。
内容的提问来源于stack exchange,提问作者sahnaz3
相关产品推荐
相关产品推荐

