我们看到的错误的最可能原因似乎是我们的azure数据库和web-app-service之间存在差异。
在我刚刚跳到远程桌面的过去,我知道如何检查它们是什么。我怎么能告诉现在呢?
查看活动日志并使用GETDATE(),夏令时(BST)似乎存在差异。我该如何改变这个? (假设我在这里确认答案是最好的问题)
答案 0 :(得分:2)
SQL Azure数据库始终使用UTC时间。因此,您不应使用datetime数据类型。相反,你应该使用datetimeoffset。
您还应该使用sysdatetimeoffset()而不是使用getdate()来捕获系统日期。
当您从数据库表中检索日期时,您应该按照here所述使用“AT TIME ZONE”。
答案 1 :(得分:1)
所有Azure SQL数据库都使用UTC作为其日期和时间。您应该获得GETDATE或GETUTCDATE的相同值。这可以解释BST的差异。
答案 2 :(得分:0)
由于您已经提到了Azure App Service WebApp时区,我想强调一点,在Azure WebApp中,默认情况下,时区始终是UTC,但您可以更改它。
您还可以在注册表中找到该列表 在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ WindowsNT \ CurrentVersion \ Time Zones下。如果无法识别字符串,则会回退到UTC。
测试它有效的最佳方法是从Kudu console输入时间。
示例:
WEBSITE_TIME_ZONE =东部标准时间 WEBSITE_TIME_ZONE = AUS东部标准时间
您可以通过名为“WEBSITE_TIME_ZONE”的Azure门户添加一个等于所讨论时区名称的应用程序设置(基本上与HKLM \ Software \ Microsoft \ Windows Nt \ CurrentVersion \ Time Zones中的密钥名称相同的字符串)。
有关详细信息,请参阅有关此特定设置的GitHub link。