0

関連する投稿を読みましたが、まだ答えが見つかりません。

次のようにテーブルに列を作成しました。

[到着]時間NOTNULL、

次のようなクエリを実行するための最も効率的な方法は何ですか。

「到着は今から1時間後」のmyTableから*を選択しますか?

DATEDIFF(時間、GETDATE()、到着)

到着の日付部分が1901,0,0であるため、非常に大きな値が得られます。まだこれを理解しようとしているので、誰かが私に迅速な答えを持っているなら、それは素晴らしいことです。

繰り返しますが、パフォーマンスは重要です。

ありがとう。

4

1 に答える 1

2

私はおそらく次のようなことをするでしょう...

select >>select list<<
from table
where datediff(minute, getdate(), [Arrival]) < 60

または、あなたの時間を使用して

select >>select list<<
from table
where datediff(hour, getdate(), [Arrival]) < 1

編集: また、パフォーマンスが重要な場合は、古い日付を許可しないように入力を検証することもお勧めします。年にも月にも依存しない定期的なスケジュールがある場合 (基本的に、時間と分を探しているだけです)、DatePart を使用するのが適切です。

select ____
from [table]
where (((datepart(hour, getdate()) = datepart(hour, [Arrival])) AND (datepart(minute, [Arrival]) - datepart(minute, getdate()) < 60)
于 2012-01-20T23:05:12.393 に答える