我是SQL Developer的新用户,并且在更改日期方面工作不多。我有一个查询,它显示比实际时间晚1个小时的信息。这是因为从中提取数据的表之一的日期始终在CST中,而其他表则认为具有CDT或CST的系统日期取决于一年中的时间。
当我加入表格时,它们比实际时间晚1小时开始。为了弥补这一点,我必须使用DELIVERY_TIME+1/24
代替,DELIVERY_TIME
但是每年需要两次更改代码。
有什么解决办法吗?
您希望尽可能将所有数据库值存储为UTC,因为它们将变得通用。您可以在应用程序层中将它们呈现为本地时间,因为这些设置通常是特定于查看数据的个人的。
如果您每天都有特定的交付时间,例如下午6点,并且您想知道该时间属于UTC,则可以构造时间并将其转换为UTC。大多数时区在本地时间前后1h来回观察某种形式的DST,但不在UTC时区。
通常,数据库中有类似MAKEDATE()
或MAKETIME()
可用的函数,它们可以构造任意时间点。使用这些时间在您首选的时区中打发时间,然后切换到UTC以使其“固定”。
每当您拥有“每年必须更改两次”的代码时,您将拥有不会被更改的代码,然后就会出现混乱。不要这样 您只是在为失败做好准备。
需要注意的是,在SQL中执行所有操作可能会非常混乱,因为除非数据库严重依赖操作系统,否则它们并不总是具有最新的时区信息。您的操作系统通常配置更好,如果情况像2005年那样发生变化,则应该对其进行修补。由于修补和未修补的系统始终处于冲突状态,因此这完全是一团糟。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句