无论是将日期设置为-100还是字符串日期,我都想使用这两种方法。所以我使用nvarchar,因为它既接受整数值也接受字符串值,但是它不起作用,请提出一些解决方案。
在字符串日期的情况下,代码可以正常工作,但在数字形式下却会产生问题
declare @date nvarchar(100);
declare @date1 nvarchar(100);
set @date = '2019-08-11'
set @date1= -100
select
(case isdate(@date)
when 1 then cast(@date as datetime)
when 0 then dateadd(day,cast(@date as int),getdate())
end)
as fromDate,
(case isdate(@date1)
when 1 then DATEADD(day, -7, convert(datetime,@date1,0))
when 0 then dateadd(day,cast(-7 as
int),convert(datetime,@date1,0))
end)
as toDate
我希望日期输出可以接受-100或字符串日期 并返回两个日期,例如fromdate和todate,但有7天的间隔。
答案 0 :(得分:0)
您在第二栏的情况下犯了一个小错误。当输入为数字时,可以使用@ date1而不是getdate()。 这是固定版本
declare @date nvarchar(100);
declare @date1 nvarchar(100);
set @date = '2019-08-11'
set @date1= -100
select
(case isdate(@date)
when 1 then cast(@date as datetime)
when 0 then dateadd(day,cast(@date as int),getdate())
end) as fromDate,
(case isdate(@date1)
when 1 then DATEADD(day, -7,
convert(datetime,@date1,0))
when 0 then dateadd(day,-7 + cast(@date1 as int),getdate())
end) as toDate