我正在使用SQL Server。 假设我有几条记录和一列datetimeoffset。
record #1 has a datetime with a +03:00 TZ
record #2 has a datetime with a +06:00 TZ
record #3 has a datetime with a -02:00 TZ
我想显示所有时间已过去的记录,以提供该特定记录的TZ。 我的WHERE子句是什么样的?
答案 0 :(得分:3)
这个评论太长了,但是,SQL Server 已经 可以优雅地处理时区:
<a href="/instagram.fist4-1.fna.fbcdn.net/vp/a122a6b090b0d08fb29054a58e4ba1d8/5E6244BC/t51.2885-15/e35/73020566_1906916579453459_3610340591421234923_n.jpg?_nc_ht=instagram.fist4-1.fna.fbcdn.net&_nc_cat=1&se=7&ig_cache_key=MjE1Mzk3NTkyNTE1NTgyMjI1NA%3D%3D.2" download>
download
</a>
如果您还输入了日期和时间中的时区,则SQL Server将适当地比较这些值。
如果由于某种原因要基于相对于该位置的时间或日期进行“填充”,则应添加一个计算列,该列强制转换为USE Sandbox;
GO
CREATE TABLE TestTable (OffsetTime datetimeoffset(0));
GO
--Insert 5 times that are all the same time:
INSERT INTO TestTable
VALUES ('2019-10-15T17:00:00-02:00'),
('2019-10-15T18:00:00-01:00'),
('2019-10-15T19:00:00+00:00'),
('2019-10-15T20:00:00+01:00'),
('2019-10-15T21:00:00+02:00');
GO
--All rows
SELECT *
FROM TestTable;
--All rows
SELECT *
FROM TestTable
WHERE OffsetTime = '2019-10-15T19:00:00+00:00';
--All rows
SELECT *
FROM TestTable
WHERE OffsetTime = '2019-10-15T21:00:00+02:00';
或datetime2
和{ {1}}(取决于您的需求):
date