Sql 当前UTC时间和时区问题
我希望你能理解并帮助我 我的Sql Server在南非(GMT+2) 我的申请在美国(GMT-6) 我的客户(手机)在南非,现在在巴西(GMT-4) 表中记录的Sql 当前UTC时间和时区问题,sql,sql-server,timezone,Sql,Sql Server,Timezone,我希望你能理解并帮助我 我的Sql Server在南非(GMT+2) 我的申请在美国(GMT-6) 我的客户(手机)在南非,现在在巴西(GMT-4) 表中记录的LastUpdateTime应为上午10:25,而客户端时间为上午4:25。此时服务器指示凌晨2:25(或类似的时间) 我教过我现在可以使用sql中的GETUTCDATE函数进行插入。但我的问题是: 如何将所有旧记录“LastUpdateTime自动转换为UTC日期 这种转换是一个好主意还是我可以在应用程序中这样做 如何允许在我的web.
LastUpdateTime
应为上午10:25,而客户端时间为上午4:25。此时服务器指示凌晨2:25(或类似的时间)
我教过我现在可以使用sql中的GETUTCDATE
函数进行插入。但我的问题是:
LastUpdateTime
自动转换为UTC日期web.config
文件appSetting
部分中配置服务器时区(这是为了在每次服务器时区更改时提及)有两种不同的方法可用于存储值,如
LastUpdateTime
:
- 就UTC而言,在
或datetime
字段中datetime2
- 就本地时间而言,在
字段中datetimeoffset
datetime
字段中存储了本地时间,则该值可能不明确。转换为UTC需要外部了解原始数据的捕获方式
如果值是由SQL的GETDATE
语句捕获的,则SQL Server的时区是相关的。南非的时间始终为UTC+02:00,因此您可以:
- 将该值保留在同一字段中,然后减去两个小时以调整为UTC
- 或者,将该值复制到
字段,保留原始值并使用UTC+02:00偏移量datetimeoffset
关于是否访问web.config文件,这更像是一个ASP.Net问题,而不是一个SQL Server问题。但是,我现在可以告诉您,没有神奇的配置设置来实现这一点。您的应用程序必须正确使用
DateTime
和DateTimeKind.Utc
,或者使用DateTimeOffset
,并且您可能需要使用TimeZoneInfo
来进行转换。这里不可能提供更好的建议,因为您没有显示任何代码,这是一个非常广泛的主题。有两种不同的方法可以接受存储值,如LastUpdateTime
:
- 就UTC而言,在
或datetime
字段中datetime2
- 就本地时间而言,在
字段中datetimeoffset
datetime
字段中存储了本地时间,则该值可能不明确。转换为UTC需要外部了解原始数据的捕获方式
如果值是由SQL的GETDATE
语句捕获的,则SQL Server的时区是相关的。南非的时间始终为UTC+02:00,因此您可以:
- 将该值保留在同一字段中,然后减去两个小时以调整为UTC
- 或者,将该值复制到
字段,保留原始值并使用UTC+02:00偏移量datetimeoffset
关于是否访问web.config文件,这更像是一个ASP.Net问题,而不是一个SQL Server问题。但是,我现在可以告诉您,没有神奇的配置设置来实现这一点。您的应用程序必须正确使用
DateTime
和DateTimeKind.Utc
,或者使用DateTimeOffset
,并且您可能需要使用TimeZoneInfo
来进行转换。这里不可能提供更好的建议,因为您没有显示任何代码,这是一个非常广泛的主题。有两种不同的方法可以接受存储值,如LastUpdateTime
:
- 就UTC而言,在
或datetime
字段中datetime2
- 就本地时间而言,在
字段中datetimeoffset
datetime
字段中存储了本地时间,则该值可能不明确。转换为UTC需要外部了解原始数据的捕获方式
如果值是由SQL的GETDATE
语句捕获的,则SQL Server的时区是相关的。南非的时间始终为UTC+02:00,因此您可以:
- 将该值保留在同一字段中,然后减去两个小时以调整为UTC
- 或者,将该值复制到
字段,保留原始值并使用UTC+02:00偏移量datetimeoffset