私は ASP.NET と SQL にかなり慣れていないので、2 つの時間列を比較する方法を理解するのに苦労しています。タイムスタンプ付きの列があり、.mdb データベースに Now() 列があります。タイムスタンプから「3時間以上」のグリッドビュー表示レコードが必要です。どうすればこれを達成できますか?
2 に答える
タイムスタンプは通常、レコードの変更を追跡するために使用され、レコードが変更されるたびに更新されます。特定の値を保存する場合は、日時フィールドを使用する必要があります。
DateTime 列を使用していて、結果を TSQL で取得したい場合は、
DATEDIFF(Hour, 'Your DateTime Column here', 'pass Now() here' )
この例を TSQL で実行してみてください。
select DATEDIFF(Hour, '2012-11-10 00:00:59.900', '2012-11-10 05:01:00.100')
Transact-SQL タイムスタンプ データ型は、時間に関連する値を持たないバイナリ データ型です。
あなたの質問に答えるために: タイムスタンプ型の列から DateTime 値を取得する方法はありますか?
答えはノーだ
datetime2
タイプの別の列が必要であり>
、比較のために演算子 to を使用します。getutcdate()
各行が挿入されるときに設定するデフォルト値を設定したい場合があります。
アップデート:
列はdatetime
タイプであり、タイプではないためtimestamp
(SQL Serverには と呼ばれるタイプがあるtimestamp
ため、混乱します)、次のことができます
WHERE [TimeCalled] <= DATEADD(hour, -3, GETDATE())
サーバーがコードと同じタイムゾーンで実行されていることを確認してください。すべての日付を UTC で保存する方が安全な場合があります。その場合はGETUTCDATE
代わりにGETDATE