嗨,我有一个单独存储日期和时间的表。两列分别为Ddate(日期类型)和Dtime(时间类型)。它还具有其他列,例如SenderName,Sendercounty,Senderdetails。我需要为日期时间之间的日期范围选择这些详细信息。 例如如果选择的日期是01/02/2019到03/02/2019以及Dtime从17:00:00到05:00:00。如何确保开始时间映射到开始日期,结束时间映射到结束日期,并返回查询之间的所有记录。我有这个查询,它工作得很好,因为我们总是只选择一个日期之前,但是现在我们需要一个日期范围,这会失败。
select Sender.SenderName,
count(product.id) as totalProduct,
Sender.Dtime as Ttime,
Sender.Ddate
from Sender
inner join product
on Sender.productId = product.id
where (product.Type in ('s','w','q') and product.status='a')
and Sender.Ddate between '2019-02-01' and '2019-02-04'
and Sender.Dtime between '17:00:00' and '05:00:00'
group by product.id order by Sender.Dtime asc
答案 0 :(得分:0)
and Sender.Dtime between '17:00:00' and '05:00:00'
可能无法返回任何行,因为范围的末尾5小于17。between
不够聪明,无法知道您正在处理环绕时间
您似乎需要一天1700到第二天0500之间的任何东西。为此,您可以尝试
and ( Sender.Dtime >= '17:00:00' OR Sender.Dtime <= '05:00:00' )