您能帮我解决我的问题吗?我正在使用SQL Server数据库,并且想从开始日期+月或日中获取结束日期。
我有这张桌子:
| ID | startdate | month | day |
| 1 | 2019-03-05| 3 | null |
| 2 | 2019-03-05| null | 30 |
所需的输出:
| ID | startdate | month | day | enddate |
| 1 | 2019-03-05| 3 | null |2019-06-05 |
| 2 | 2019-03-05| null | 30 |2019-04-04 |
能否请您帮我编写一个SQL查询?
答案 0 :(得分:1)
您可以使用以下查询获得所需结果
declare @TestDate table
(id int, startdate date, [month] int, [day] int)
insert into @TestDate
values
(1, '2019-03-05', 3, null)
insert into @TestDate
values
(1, '2019-03-05', null, 30)
select Id,
startdate,
[month],
[day],
dateadd(day, isnull(day, 0), dateadd(month, isnull([month], 0), startdate)) as enddate
from @TestDate
答案 1 :(得分:0)
您可以尝试以下操作-使用dateadd()
函数
select id,
startdate,
dateadd(case when month is null then dd else mm, coalesce(month,day),startdate) as enddate
from tablename
答案 2 :(得分:0)
您可以使用Dateadd()函数尝试以下查询。 DATEADD()函数向日期添加时间/日期间隔,然后返回日期。
create table tblMonth (Id int, startdate date, month int, day int)
insert into tblMonth values
( 1, '2019-03-05', 3, null),
(1, '2019-03-05', null, 30)
Select Id, startdate, month, day, DATEADD(MM, isnull(month,0), startDate) AS endDate
from tblMonth
要添加日期并进行检查,可以使用case语句,如下所示。
Select Id, startdate, month, day,
case when month is null then
DATEADD(dd, isnull(day, 0), startDate)
else
DATEADD(mm, isnull(month,0), startDate)
end
AS endDate
from tblMonth