以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何简化在select语句中根据当前时间来判断获奖时间在本月25日和上月26日之间的数据并进行筛选数据? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=164921) |
-- 作者:cnsjroom -- 发布时间:2021/5/8 22:56:00 -- 如何简化在select语句中根据当前时间来判断获奖时间在本月25日和上月26日之间的数据并进行筛选数据? sel ect DATEADD(MONTH,-1,getdate()) 当前时间月份减掉1个月 比如当前时间是2021-5-8 结果为2021-4-8 sel ect datepart(year,getdate()) 获取当前时间年份 sel ect datepart(day,getdate()) 获取当前时间日期 sel ect datepart(month,getdate()) 获取当前时间月份 代码一: sel ect * from {表彰} where datepart(year,[获奖时间]) =datepart(year,getdate()) and datepart(month,[获奖时间]) >= DATEPART(MONTH,DATEADD(MONTH,-1,getdate())) and datepart(month,[获奖时间]) <= datepart(month,getdate()) and datepart(day,[获奖时间]) = 25 该语句可以获取得到 大于并等于sql系统时间当年 且当月减1个月 小于并等于sql系统时间当月 且日期为25号的数据 如 获奖时间在 2021-4-25 2021-5-25 这两天的数据 代码二: sel ect * from {表彰} where datepart(year,[获奖时间]) =datepart(year,getdate()) and datepart(month,[获奖时间]) >= DATEPART(MONTH,DATEADD(MONTH,-1,getdate())) and datepart(month,[获奖时间]) <= datepart(month,getdate()) and datepart(day,[获奖时间]) <= 25 该代码实现了从2021-4-1到2021-5-25这个区间的所有数据筛选 红色部分要怎么变更 才能实现2021-4-26直到2021-5-25之间的数据呢?前面年月都准确了 现在这个日期怎么确定为4月26.27.28.29.30.5月1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25这些区间值呢? 代码三: sql语句 se lect * from {表彰} where 获奖时间 between \'2021-4-26\' and \'2021-5-25\' 这个可以实现4月26.27.28.29.30.5月1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25这些区间值 但是不想把 \'2021-4-26\' and \'2021-5-25\'这个部分写死 想让系统自动根据当前系统时间 自动变更为 2021-5-26 2021-6-25 2021-6-26 2021-7-25 …… 上述代码有没有更简便的写法呢?实现2021-4-26至2021-5-25 这个区间的数据筛选:
[此贴子已经被作者于2021/5/8 23:42:10编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/5/9 21:12:00 -- SELECT CAST(convert(nvarchar(8),dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)),120) + \'26\' as datetime) as 上个月26日, CAST(convert(nvarchar(8),getdate(),120) + \'25\' as datetime) as 这个月25日 |