我通过 OpenQuery() 从 MS SQL Server 2014 连接到 (ServiceNow) MySQL 数据库。我想过滤掉超过 24 小时的记录。当我设置一个静态日期时,它会返回我希望看到的数千行。但是,当我尝试使用计算字段时,它会运行但返回零记录。
select number, sys_updated_on
from OPENQUERY(ServiceNowUAT,
'Select number, sys_updated_on
FROM DATABASE.[SCHEMA].[TableName]
WHERE sys_updated_on > DATEADD(d, -2, NOW()) ')
我还使用了该DATE_SUB()
函数以及各种其他形式的语法。我尝试将计算的日期转换为日期、日期时间、时间戳、varchar 等。我也在 MS Query 和 SSIS 中尝试过。sys_updated_on > DATEADD(d, -2, NOW())
一旦我添加了“ ”段,所有的查询都无法返回结果,以及其他类似的查询。
如果我将 sys_update_on 字段转换为时间戳,它可以工作,但会将处理时间从大约 10 秒增加到 30 多分钟,这当然并不理想(表中有几百万行
该sys_update_on
字段的格式为“ 2015-02-10 10:24:17.000000
”。
另一个相关部分是我使用 ServiceNow 提供的 ODBC 驱动程序从 ServiceNow MySQL 数据库中提取,而不是 MySQL。我没有数据映射,所以我不能确定数据类型是什么。在这一点上,我猜它是某种字符串,而不是真正的时间戳/日期时间,但我无法确认这一点。
有没有人有任何想法如何使这项工作成为可能。返回结果 b. 跑半个小时不?