用于从两列中的两个日期之间检索数据的SQL查询
select distinct mname
from tb_reqmach
where fromdate >= '2016/12/08'
and todate <= '2016/12/30'
and mcfact = 'BSC - 3'
group by mname
当我使用上面的查询时,它返回null。 db的值
The figure attached is the data saved in db
当起始日期和两个日期介于保存日期之间时,请帮助检索行
当我使用
时select distinct mname
from tb_reqmach
where fromdate >= '2016/12/01'
and todate <= '2016/12/30'
and mcfact = 'BSC - 3'
group by mname
它检索行,当我使用
时select distinct mname, fromdate
from tb_reqmach
where '2016/12/08' between fromdate and todate
这也会检索行
但我需要按照我的要求检索
答案 0 :(得分:0)
试试这个:
select distinct mname
from tb_reqmach
where fromdate >= DATEADD(mm, DATEDIFF(mm, 0, '2016/12/08'), 0)
and todate <= DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, '2016/12/25') + 1, 0))
and mcfact = 'BSC - 3'
group by mname
如果想要分别从fromdate到date检索第一天和最后一天的数据,请在条件中使用equal。
答案 1 :(得分:0)
sql不需要更多! 用这个:
select distinct mname
from tb_reqmach
where fromdate >= '2016/12/08'
and mcfact = 'BSC - 3'
group by mname
然后看一下结果: 是否有任何行(todate&lt; ='2016/12/30')??
屏幕截图在范围内无法帮助。
答案 2 :(得分:0)
select distinct mname
from tb_reqmach
where fromdate >= convert(datetime, '2016-12-08')
and todate <= convert(datetime, '2016-12-30')
and mcfact = 'BSC - 3'
group by mname
答案 3 :(得分:0)
问题在于您没有包含您的要求,您刚刚包含了您认为可以实现的SQL。
这个SQL:
select distinct mname
from tb_reqmach
where fromdate >= '2016/12/08'
and todate <= '2016/12/30'
and mcfact = 'BSC - 3'
group by mname
只会获取稍后或等于12月8日且 todate小于或等于12月30日的行。您的屏幕截图中没有此类行。
我的猜测是,您正在寻找能够获取有时在给定日期范围内有效的所有行的内容,并且这样做:
select distinct mname
from tb_reqmach
where fromdate <= '20161230'
and todate >= '20161208'
and mcfact = 'BSC - 3'
group by mname
这也是您应该使用的日期格式,其他格式会受到区域设置的影响。