微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle通过链接服务器到SQL Server现在,从BST切换到GMT后,带有本地时区字段的时间戳会偏移调整回来的最佳方法?

如何解决Oracle通过链接服务器到SQL Server现在,从BST切换到GMT后,带有本地时区字段的时间戳会偏移调整回来的最佳方法?

我知道标题可能令人困惑,但是我想尽可能多地了解它。

我使用链接服务器连接将数据从Oracle生产数据库提取到报表数据库中(现在不讨论该方法的有效性-它是继承的)。

我可以跑步:

execute ('select sysdate from dual') at XXX;

与之匹配

select getdate()

但是:

execute ('select max(dstamp) from transaction_table') at XXX;

现在返回一个小时的时间。

在夏季(BST)期间一切正常,但是回到GMT的那一刻我们要花一个小时。

我确定我已经读过sql Server没有与sessiontimezone等效的功能,或其他可能有助于偏移量来抵消“问题”的功能,但是可以提供任何帮助。

这不是我们第一次遇到这个问题,旧的解决方案是通过一个函数手动向每个datetime字段添加一个小时,然后在开关处停止添加。是的,不理想,但是当时可以正常工作,我们上次无法解决

sql服务器是在4月(我认为是4月)重建的,时区设置为GMT标准时间。 如果有人可以帮助您并且需要更多信息来诊断/开发解决方案,请给我电话。

非常感谢

解决方法

因此,这与SQL Server系统时间和Oracle Server系统时间之间的差异有关。 SYSDATE从运行它的系统(SQL Server服务器)中提取日期。另一方面,CURRENT_DATE在Oracle服务器上运行。我们可以利用这个优势。因此,我将您的查询更改为以下内容:

SELECT MAX(dstamp)+(CURRENT_DATE-SYSDATE)
FROM transaction_table;

这将使MAX结果移位,以说明服务器时间的差异。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。