SQL Server 2008 函数将 GMT 时间转换为 AEST 并采用夏令时

Posted

技术标签:

【中文标题】SQL Server 2008 函数将 GMT 时间转换为 AEST 并采用夏令时【英文标题】:SQL Server 2008 Function Convert GMT time to AEST and also take of daylight Saving 【发布时间】:2014-07-27 03:52:38 【问题描述】:

我需要将时间从 GMT 格式转换为 AEST(澳大利亚),并妥善处理夏令时。

任何想法或帮助将不胜感激。

谢谢 沙达布

【问题讨论】:

你是指 GMT 还是 UTC? 【参考方案1】:

mysql 提供了一个CONVERT_TZ 函数。为此,必须填充 time_zone% 表。

我不需要重复 MySQL 文档。

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_convert-tz

【讨论】:

对不起,我问的是 SQL Server 2008。【参考方案2】:

在 SQL Server 2008 及更高版本中,您可以将 DATETIMEOFFSET 数据类型用于包括时区在内的日期/时间值。

还有一个 TODATETIMEOFFSET function 将 UTC 时间转换为基于时区的日期/时间。

因此,在您的情况下,您可以像这样将 UTC 日期/时间转换为 AEST 日期/时间:

DECLARE @todaysDateTime datetime2;
SET @todaysDateTime = SYSUTCDATETIME();

SELECT 
    TODATETIMEOFFSET (@todaysDateTime, '+10:00'); -- AEST date/time

我真的不知道是否有任何东西可以自动处理夏令时设置 - 您可能需要自己处理,通过定义时区偏移(AEST 为 +10:00,AEDT 为 +11:00,具体取决于年中的日期)。

【讨论】:

以上是关于SQL Server 2008 函数将 GMT 时间转换为 AEST 并采用夏令时的主要内容,如果未能解决你的问题,请参考以下文章

在sql server2008中的日期类型是啥

SQL Server2008函数大全(完整版)

SQL Server 2008 分区函数和分区表

SQL Server2008函数大全(完整版)

SQL Server2008函数大全(完整版)

UTC 到 EST SQL Server 2008