0

between 句を使用して日付範囲を生成する 2 つのクエリがあります。日付は 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 日) は、これらの両方の範囲内にあります。

私は完全に困惑しています。ここで何が起こっている可能性がありますか?任意の支援をいただければ幸いです

4

2 に答える 2

1

二重引用符を使用すると、比較するtext-stringsのではなく、比較しますdates01/07/2013is less thanの文字通りの意味は25/01/2013、基本的にこれらの文字列は文字ごとに比較されます。両方の文字列の最初の文字を見ると、0は 未満です2

于 2013-08-06T14:41:02.643 に答える