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

时间:2013-08-06 14:13:51

标签: mysql sql vb.net

我有两个使用between子句生成日期范围的查询,其中日期通过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"

不会。即使测试数据中包含的日期(25/07/2013)也在这两个范围内。

我完全难过了。这可能会发生什么?任何协助将不胜感激

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

答案是不要使用Between。

WHERE子句中的该行分成两行,并使用>=>明确指定是否包含该日期。

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

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