sql - 星期差,如今天日期和日期前 7 天
问题描述
我想要两种方式,无论我把日期放在 -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 天的差距。
解决方案
您在第二列案例中犯了一个小错误。当输入是数字时,您使用 @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
推荐阅读
- c++ - 使用 C++ 创建特殊的二叉搜索树
- angular - 在 ng serve 构建 Angular 库
- reactjs - react 会重新渲染只有状态的某些部分发生变化的孩子,还是所有使用状态的孩子都被重新渲染?
- gradle - 使用 Gradle 工具 api 以编程方式获取 Gradle 插件
- python - python - 为什么循环不会在python中的if子句条件上跳转索引?
- html - 屏幕中的px单位宽度分辨率问题
- c# - Tizen.NET NfcCardEmulation 抛出 UnsupportedException(具有附加权限)
- css - 在视口底部固定元素定位 - 不诉诸位置:固定(纯 CSS 解决方案)
- sql - 如何在没有错误缩进的情况下正确格式化 SQL 文件?
- javascript - 单击扩展程序的图标时,有没有办法添加 HTML