SQLSERVER判断为哪个月

目前有两张表,第一张表是正常销售表,有一个字段是时间TIMES,另一张表是时间区间表,拥有字段开始时间STARTTIME,结束时间ENDTIME,对应月份MONTH,现在如何把两张表关联,让第一张正常销售表多一个月份字段MONTH

STARTTIME和ENDTIME合在一起是一个区间,TIMES落入这些区间的哪一个,然后取那个时间表里的月份

wayne_ 发布于 2021-6-11 14:08 (编辑于 2021-6-11 14:15)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
1
axingLv6专家互助
发布于2021-6-11 14:21(编辑于 2021-6-11 14:22)

select b.month,a.* 

from  销售表 a 

left join 时间区间表 b on a.times between b.starttime and b.endtime

最佳回答
0
luojian0323Lv7资深互助
发布于2021-6-11 14:10

select a.*,b.month from 表A a

left join 表B b

on a.某个ID=b.某个id

  • wayne_ wayne_(提问者) 正常销售表里的字段举个例子是2021-06-11,时间表里三个字段分别是2021-05-29,2021-06-29,6,每月29号至下月29号为当前月,这种形式,需要进行判断,每月ID这个字段
    2021-06-11 14:14 
  • luojian0323 luojian0323 回复 wayne_(提问者) 我以为你的A表取不到月份值 你直接截取不就完了 select a.*,substr(a.日期,6,2) month from 表A a
    2021-06-11 14:21 
最佳回答
0
wangfutaoLv5初级互助
发布于2021-6-11 14:12

在查询的时候用这个函数,获取times中的月份,MONTH(TIMES)然后重新命名一个字段即可

最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-6-11 14:14(编辑于 2021-6-11 14:28)

你是不是想问:自然月中的日期与财务账套的月对应关系?

比如2021-05-15 至2021-06-14为2021-05???

image.png

  • wayne_ wayne_(提问者) 不是问这个,正常销售表里有1万行,即1万个时间,时间表里是起始时间及月份固定好了,现在要把这一万个时间在时间表里的月份找出来,时间是落在起始时间内的
    2021-06-11 14:17 
最佳回答
0
jeerenLv5见习互助
发布于2021-6-11 15:26(编辑于 2021-6-11 15:29)

不考虑年份:

select datepart(month,A.TIMES) as 月份,其它字段 from B left join A on A.TIMES between B.STARTTIME and B.ENDTIME

否则可以用格式化时间函数convert(varchar(100),A.TIMES,112)再截取或拼接,然后比较

  • 5关注人数
  • 633浏览人数
  • 最后回答于:2021-6-11 15:29
    请选择关闭问题的原因
    确定 取消
    返回顶部