我们正在使用一个以 C/Unix 格式存储日期的旧应用程序。 C 时间基本上是自 1970 年 1 月 1 日以来的秒数。日期以整数形式存储在 SQL Server 数据库中。我正在为使用这些日期的报告编写视图。
到目前为止,我正在使用以下命令将 UNIX 时间转换为本机日期时间:
DateAdd(s,3600+unix_time,'1/1/1970')
3600 将从 UTC 转换为我们当地的 GMT+1 时区。这在冬天是准确的,但在夏天,由于夏令时,它会减少一小时。
SQL Server 中是否有内置方法可以将 UTC 转换为本地时间?
实际上,上面的答案忽略了夏令时。如果当前不是夏令时,夏令时内的日期将休息一小时,反之亦然。此外,许多不同国家的立法者喜欢让夏令时变得比实际需要的更加复杂。
本质上,如果可能的话,尽量在 SQL Server 中避免这种情况。客户端日期处理库通常可以得到正确的结果。如果您需要使用数据库中已有的时间戳,请考虑将它们转换为日期时间列或将日期值转换为客户端代码中的时间戳,然后再将它们用作查询参数。
这只是那些一直以错误的方式发明的轮子之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)