在不同日期和相同日期之间选择时间

时间:2019-02-20 14:48:25

标签: mysql date datetime time range

嗨,我有一个单独存储日期和时间的表。两列分别为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

1 个答案:

答案 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' )