概要:キー列のUTC時刻がエンコードされている場合、UTC時間間隔に属するレコードを抽出するにはどうすればよいですか?
UTCエンコーディング:レコードに。のような文字列としてエンコードされたUTC時間が含まれているサードパーティのテーブルがあります'2456065.80700942:0000002F'
。このタイプのUTCを取得するにはDATETIME
、次の式を使用できます。
CAST((CAST(LEFT(encodedUTC, 16) AS FLOAT) - 2415020.5) AS DATETIME)
彼らは、コロンの前の部分は、float(およびfloatから文字列)にエンコードされたユリウス日であると言います。私はチェックしませんでした、それはうまくいくようです。
クエリ:今、私は@fromUTC
と@toUTC
のDATETIME
タイプを持っています。選択できます:
SELECT CAST((CAST(LEFT(d.UTC, 16) AS FLOAT) - 2415020.5) AS DATETIME) AS UTC,
...
FROM dbo.Data AS d
WHERE CAST((CAST(LEFT(d.UTC, 16) AS FLOAT) - 2415020.5) AS DATETIME) > @fromUTC
AND CAST((CAST(LEFT(d.UTC, 16) AS FLOAT) - 2415020.5) AS DATETIME) < @toUTC
(BETWEEN
同じ回数のレコードを取得したくないので使用していません。)それは機能しますが、問題は変換式が3回繰り返されることです(そうでない場合は同じコードを繰り返すのは好きではありません)必要)。
私の質問は:どうすればSELECT
もっと上手に書くことができますか?
時間と情報をありがとう、
Petr