摘要: key列中的UTC时间编码后,如何提取属于UTC时间区间的记录?
UTC 编码:我确实有一个第三方表,其中记录包含 UTC 时间编码为字符串,如'2456065.80700942:0000002F'
. 要获取该DATETIME
类型的 UTC,可以使用以下公式:
CAST((CAST(LEFT(encodedUTC, 16) AS FLOAT) - 2415020.5) AS DATETIME)
他们说,冒号之前的部分是儒略日期编码为浮点数(以及浮点数到字符串)。我没有检查,它似乎工作。
查询:现在我有@fromUTC
and@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
更好?
感谢您的时间和信息,
彼得