我有一个服务,它将我的SQL服务器数据库的日期推送到网络数据库,推送的日期格式是“yyyyMMdd”。
我的数据库位于印度,因此日期格式和当前日期基于印度文化和区域设置。
我的网络服务器位于美国,因此日期格式基于美国。
印度和美国时间差不多有13个小时。因此,当我的客户在2011年6月13日上午9:00进入货物时,它会在6月12日收到的网站上显示。
因此,在客户预订之前收到货物会造成如此大的麻烦。请指导我解决这个问题。
由于
答案 0 :(得分:1)
这将获取用户输入并将其转换为UTC:
DECLARE @input DateTime = '13 June 2011 9:00 am';
DECLARE @utc DateTime = DATEADD(s, DATEDIFF(s, GETDATE(), GETUTCDATE()), @input);
SELECT @input UserInput, @utc UTC;
您可以将所有DateTime
值存储在数据库中作为UTC,然后在适当的时区/文化中将它们呈现给用户。
答案 1 :(得分:0)
这笔交易确实发生在6月12日的美国,所以这实际上是正确的。
如果您希望该日期在6月12日在美国和6月13日在印度观看时显示,则需要将您的日期存储为UTC日期。