星期差异,例如今天的日期和日期之前的7天

时间:2019-09-10 23:20:29

标签: sql sql-server database

无论是将日期设置为-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天的间隔。

1 个答案:

答案 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