繁体   English   中英

如果选择的日期等于或大于数据中的日期,则日期之间的查询仅返回结果

[英]Query between dates only returns results if a selected date is equal or greater than date in data

我有两个查询,它们使用ween子句来生成日期范围,该日期范围是通过VB.net程序传递的:

select
 w.plate,
 Description,
 Date_in,
 time_in,
 Date_out,
 Time_out,
 Date_out-Date_in as "Days on Site",
 Time_out-Time_in as "Duration on Site (Hrs)"
from tbl_stay S
inner join tblwhitelist W
on S.plate=W.plate
where Date_in between "1/06/2013" and "25/09/2013"

select
Plate,
Date_in,
Time_in,
Date_out,
Time_out,
Date_out-Date_in as "Days on site",
Time_out-Time_in as "Duration on site (Hrs)"
from tbl_stay
where plate not in (Select plate from tblwhitelist)
and date_in between "1/07/2013" and "1/08/2013"

为了进行测试,我输入和输出的日期均为“ 25/07/2013”​​。 仅当月份中的某天大于数据中提到的日期时 ,这些查询才会产生结果(25)

例如:上面查询中提到的日期:

Date_in between "1/06/2013" and "25/09/2013"

将产生结果,但是

date_in between "1/07/2013" and "1/08/2013"

将不会。 即使测试数据中包含的日期(2013年7月25日)在这两个范围内。

我完全陷入了困境。 这可能是怎么回事? 任何援助将不胜感激

使用双引号时,您将比较text-strings ,而不是dates 01/07/2013字面意义小于25/01/2013 ,基本上这些字符串是逐字符比较的。 如果您查看两个字符串中的第一个字符,则0小于2

答案是不使用之间。

分离该行中WHERE子句为两个和明确指定是否通过使用包括该日期>= ,或只是一个>

AND date_in > "1/07/2013"date_in >= "1/07/2013"

AND date_in < "1/08/2013"date_in <= "1/08/2013"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM