serversqlsql如何取范围时间内,每个月第一周的日期

sql如何取范围时间内,每个月第一周的日期

想要效果

select * from table1

where 数据库字段创建时间(yyyymmdd) = 范围时间(时间1~时间2)内,每个月第一周的日期

and    数据库字段创建年月(yyyymm)  <时间1

and    数据库字段创建年月(yyyymm)  >时间2

SQL 狂奔的小蜗牛 发布于 2022-12-27 10:06 (编辑于 2022-12-27 10:15)
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
狂奔的小蜗牛Lv3见习互助
发布于2022-12-27 13:30

dateadd(day,0,Z1STMP1) = dateadd(week,datediff(week,0,dateadd(day,6-datepart(day,concat(Z1MON,'01')),concat(Z1MON,'01'))),0)

1.dateadd(day,0,Z1STMP1):用dateadd加0天为了日期后带00:00:00

2.dateadd(week,datediff(week,0,dateadd(day,6-datepart(day,concat(Z1MON,'01')),concat(Z1MON,'01'))),0)

计算出Z1MONyyyymm月的第一周周一是那天

最佳回答
0
yzm339714Lv6中级互助
发布于2022-12-27 10:11

https://blog.csdn.net/menghuannvxia/article/details/114290062

SQL Server DATEPART() 函数

用这个把日期字段转化为周数,后面的动态日期 就为每月的1号,然后就是找 周数 跟1号是同一周的数据了

  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 大佬,具体怎么写呢,sqlserver不会啊
    2022-12-27 10:14 
  • yzm339714 yzm339714 回复 狂奔的小蜗牛(提问者) 上面的连接里面有用法呀
    2022-12-27 10:19 
  • yzm339714 yzm339714 回复 狂奔的小蜗牛(提问者) DATEPART(ww,数据库字段创建时间) = DATEPART(ww,时间1)
    2022-12-27 10:20 
  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 回复 yzm339714 还是没懂,那每月一号咋求啊,怎么循序啊,where底下怎么放每月一号呢,写死吗,但我是范围值 啊,还有怎么比较啊1号和同一周啊
    2022-12-27 10:22 
  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 回复 yzm339714 有个问题,有没有这样一种情况,这月1号是上一周的周日,假如是49周,那2号就是周一了,是第50周,那就不相等了对吧,那等于每月1号的这个写法会不会有问题呢
    2022-12-27 10:51 
最佳回答
0
SrafyLv5见习互助
发布于2022-12-27 10:12

搞个日期码表比较简单

  • 2关注人数
  • 516浏览人数
  • 最后回答于:2022-12-27 13:30
    请选择关闭问题的原因
    确定 取消
    返回顶部