タイムスタンプ付きのテーブルがあり、このテーブルを 1 時間間隔に分割したいと考えています。今から数時間前にさかのぼります。T-SQL DATEDIFF関数で必要な結果を取得できません。これは、2 つの日付の間で分針が 12 を通過する回数をカウントするためです。タイムスタンプと現在。
T-SQL でこれを行う簡単な方法はありますか?
更新: コメントに応じて、いくつかのサンプル データ、現在使用しているクエリ、取得している結果、および必要な結果を以下に示します。
サンプルデータ:
TimeStamp
*********
2010-07-20 11:00:00.000
2010-07-20 10:44:00.000
2010-07-20 10:14:00.000
2010-07-20 11:00:00.000
2010-07-20 11:40:00.000
2010-07-20 10:16:00.000
2010-07-20 13:00:00.000
2010-07-20 12:58:00.000
現在のクエリ:
SELECT TimeStamp, DATEDIFF(HOUR, TimeStamp, CURRENT_TIMESTAMP) AS Diff FROM ...
結果:
タイムスタンプ差分 ********* **** 2010-07-20 11:00:00.000 2 2010-07-20 10:44:00.000 3 2010-07-20 10:14:00.000 3 2010-07-20 11:00:00.000 2 2010-07-20 11:40:00.000 2 2010-07-20 10:16:00.000 3 2010-07-20 13:00:00.000 0 2010-07-20 12:58:00.000 1
私がむしろ持っているもの:
-- 時刻は現在、例として 13:40 です。 タイムスタンプ差分 ********* **** 2010-07-20 11:00:00.000 3 -- +1 2010-07-20 10:44:00.000 3 2010-07-20 10:14:00.000 4 -- +1 2010-07-20 11:00:00.000 3 -- +1 2010-07-20 11:40:00.000 2 または 3 -- エッジ ケース、どちらでも構いません 2010-07-20 10:16:00.000 4 -- +1 2010-07-20 13:00:00.000 1 -- +1 2010-07-20 12:58:00.000 1
変更された結果を でマークしました+1
。また、これが 0 インデックスか 1 インデックスかはあまり気にしませんが、基本的には、現在 13:40 であれば、同じ値を取得する時間スパンを
12:40~13:40 1(または0) 11:40~12:40 2(または1) 10:40~11:40 3(または2) 09:40-10:40 4 (または 3)