0

2回の間のアクセス時間を取得しようとしています。

accesstime    starttime   endtime
23:00         22:00       00:00:00

私のクエリは次のようになります

select accesstime 
from myTable 
where accesstime  between '22:00:00'and '00:00:00'

クエリを実行しても結果が得られない

なんで?

4

3 に答える 3

1

時間は から00:00:00まで23:59:59

だから、同じ日22:00よりも大きい00:00:00

編集:これはDateTime. である場合、aが より大きいVarcharため、同じ問題があります。22:00Varchar00:00:00

于 2012-06-10T05:08:58.720 に答える
1

BETWEENに関する情報:

BETWEEN は、 test_expression の値が begin_expression の値以上で end_expression の値以下の場合TRUE返します

テーブルでは、アクセス時間 '23:00' (テスト式) は '22:00:00' (開始式) よりも大きいですが、'00:00:00' (終了式) より小さくないため、false を返します。

結果を表示するには、クエリを次のように変更します。

select accesstime from myTable 
where accesstime  between '00:00:00' and '23:00:01'
于 2012-06-10T05:24:22.123 に答える
0

時間をdatetimeに変換し、 dateadd関数で1日を時間「00:00:00」に追加すると、真に機能すると思います。

サンプルコードは次のとおりです。

CREATE table EX_Time (accesstime nvarchar(100),starttime nvarchar(100),endtime nvarchar(100)) 

INSERT INTO EX_Time(accesstime,starttime,endtime)
VALUES (N'23:00:00',N'22:00:00',N'00:00:00')

select * 
FROM Ex_Time
Where convert(datetime,accesstime) BETWEEN convert(datetime,'22:00:00')
AND dateadd(day,1,convert(datetime,'00:00:00'))
于 2012-06-10T06:00:14.723 に答える