UTC时区为"日期"和"时间" Azure SQL中的数据类型

时间:2017-08-07 09:19:54

标签: sql-server date time azure-sql-database

我计划在我的SQL Server 2016 Express数据库中使用datetime数据类型,我将在生产环境中将其部署到Azure SQL数据库。

我知道" datetime2"数据类型,Azure SQL将其存储在UTC时区中。这也是" date"和"时间"? Microsoft引用(上面链接),日期和时间不是"时区偏移感知和保留"。

这是否意味着它们不像datetime2那样存储在UTC时间内?我还要担心转换到UTC时间吗?

2 个答案:

答案 0 :(得分:1)

为了补充Alberto的答案,它更像是数据采集问题,而不是数据类型问题。

数据类型不对数据进行任何假设。注册为timedate的变量只是SQL查询引擎的规范。它告诉引擎如何物理存储数据,它提供了一组可以对数据执行的有效操作。因此,time变量本身不会占用任何时区。它可以包含UTC时间,PST时间或您想要的任何时区。 date变量也是如此。

回到你的问题,转换到UTC时间的需要将取决于数据采集方法。如果使用Azure上的内置GETDATE()方法填充表,则数据将为UTC,数据类型为datatime。要提取date变量和time变量,您可以使用CONVERT运算符。

答案 1 :(得分:0)

SQL Azure数据库始终使用UTC时间。因此,您不应使用datetime数据类型。相反,你应该使用datetimeoffset。

您还应该使用sysdatetimeoffset()而不是使用getdate()来捕获系统日期。

当您从数据库表中检索日期时,您应该按照here所述使用“AT TIME ZONE”。

希望这有帮助。

此致

Alberto Morillo