SQL中的夏令时

阿山汗

我是SQL Developer的新用户,并且在更改日期方面工作不多。我有一个查询,它显示比实际时间晚1个小时的信息。这是因为从中提取数据的表之一的日期始终在CST中,而其他表则认为具有CDTCST的系统日期取决于一年中的时间。

当我加入表格时,它们比实际时间晚1小时开始。为了弥补这一点,我必须使用DELIVERY_TIME+1/24代替,DELIVERY_TIME但是每年需要两次更改代码。

有什么解决办法吗?

塔德曼

您希望尽可能将所有数据库值存储为UTC,因为它们将变得通用。您可以在应用程序层中将它们呈现为本地时间,因为这些设置通常是特定于查看数据的个人的。

如果您每天都有特定的交付时间,例如下午6点,并且您想知道该时间属于UTC,则可以构造时间并将其转换为UTC。大多数时区在本地时间前后1h来回观察某种形式的DST,但不在UTC时区。

通常,数据库中有类似MAKEDATE()MAKETIME()可用的函数,它们可以构造任意时间点。使用这些时间在您首选的时区中打发时间,然后切换到UTC以使其“固定”。

每当您拥有“每年必须更改两次”的代码时,您将拥有不会被更改的代码,然后就会出现混乱。不要这样 您只是在为失败做好准备。

需要注意的是,在SQL中执行所有操作可能会非常混乱,因为除非数据库严重依赖操作系统,否则它们并不总是具有最新的时区信息。您的操作系统通常配置更好,如果情况像2005年那样发生变化,则应该对其进行修补由于修补和未修补的系统始终处于冲突状态,因此这完全是一团糟。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章