WQINF.COM

工作、学习、生活

SQL以周一为基准,查询条件为本周的数据

由于系统固定查询条件中,日期型数据在按周作为条件进行过滤时,默认按照西方以周日为第一天的规则,但在国内,一般是以周一为第一天。那么我们在查询的固定条件进行过滤时,需要进行一定的调整:

首先是获取本周的周一的起始时间:

SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

显示的格式为:2019-06-17 00:00:00.000,我们需要将其格式化为”年-月-日”的格式:

SELECT CONVERT(varchar(100), DATEADD(wk, DATEDIFF(wk,0,getdate()), 0), 23)

即显示的格式为:2019-06-17

然后获取”本周的周一的起始时间”加上7天之后的结束时间:

SELECT dateadd(day,7,CONVERT(varchar(100), DATEADD(wk, DATEDIFF(wk,0,getdate()), 0), 23))

显示的格式依然为:2019-06-24 00:00:00.000,同样将其格式化为”年-月-日”的格式:

SELECT CONVERT(varchar(100),dateadd(day,7,CONVERT(varchar(100), DATEADD(wk, DATEDIFF(wk,0,getdate()), 0), 23)), 23)

即显示的格式为:2019-06-24

然后根据实际的需求进行配置条件字段即可:
完整的案例:

SELECT * FROM uf_yzgzap WHERE modedatacreatedate>=(SELECT CONVERT(varchar(100), DATEADD(wk, DATEDIFF(wk,0,getdate()), 0), 23)) and modedatacreatedate<=(SELECT CONVERT(varchar(100),dateadd(day,7,CONVERT(varchar(100), DATEADD(wk, DATEDIFF(wk,0,getdate()), 0), 23)), 23))

我们只需要取出WHERE 条件,并将其日期字段modedatacreatedate修改为实际的日期字段即可(注意,必须为“年-月-日”的格式数据)。

轻松实现自定义组件安装或管理Office

上一篇

经典游戏红色警戒2不能在Win10 64位系统上运行的问题的解决方案

下一篇
评论
发表评论 说点什么
  • SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) /*本周第一天*/ SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) /*本月第一天*/ SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) /*本季第一天*/ SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) /*本年第一天*/ Select dateadd(ms,-3,DATEADD(wk, DATEDIFF(wk,0,GETDATE())+1, 0)) /*本周最后一天*/ Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,GETDATE())+1, 0)) /*本月最后一天*/ Select dateadd(ms,-3,DATEADD(qq, DATEDIFF(qq,0,GETDATE())+1, 0)) /*本季最后一天*/ Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,GETDATE())+1, 0)) /*本年最后一天*/