如果是自架 IIS、SQL Server 服务器,取得当前时间是看服务器设定的时区在哪里,就会拿到当地时区的当前时间,但是我们使用 Azure 提供的 PaaS 服务,只管用不必管服务器,首要注意的是取得当下时间的 API 默认时区 UTC 的问题,务必在上云之前针对自己的程序调整一番。
App Service
App Service 要调整时区稍微容易一些,只要在“应用程序设定
”中去增加一个设定名称“WEBSITE_TIME_ZONE
”,值输入“Taipei Standard Time
”,应用程序取得的当前时间就是中国台湾时间。
SQL Database
SQL Database 就比较麻烦了,目前还没有一个比较方便的方法像 App Service 加个什么参数就搞定了,如果是新开发的项目还好,但是如果是已经开发好的项目要上云就要扫一下 SQL 语法,将 GETDATE()
置换掉。
我使用的 SQL Database 版本是 12.0.2000.8,支持 AT TIME ZONE
语法,可以直接对取得的时间变更时区。
SELECT CONVERT(DATETIME, SYSDATETIMEOFFSET() AT TIME ZONE ‘Taipei Standard Time‘)
最终我建了一个纯量值函数来取得当前的中国台湾时间,以取代 GETDATE() 函数。
CREATE FUNCTION [dbo].[GETDATE_TW]
(
)
RETURNS DATETIME
AS
BEGIN
RETURN CONVERT(DATETIME, SYSDATETIMEOFFSET() AT TIME ZONE ‘Taipei Standard Time‘)
END
参考数据
- Azure 上SQL Database(PaaS)Time Zone时区问题处理
- Time Zone IDs (Compact 2013)
原文:大专栏 [料理佳肴] Azure App Service 及 SQL Database 默认时区的问题
原文地址:https://www.cnblogs.com/chinatrump/p/11491032.html
时间: 2024-10-29 21:02:27