我在 SQL Server 中针对专有数据库运行 OpenQuery,不幸的是,该数据库选择了过于现代并支持 5 位数的年份,并且作为用户的用户确实设法记录了它们。我编写的代码正在运行,但由于车辆表中有很多日期,因此变得过于复杂。我的工作代码具有以下特点:
select
vehicle
, cast (recdate as varchar) as recdate
from OPENQUERY([TEST],
'SELECT
tbl.vehicle,
tbl.recdate
FROM vehicles tbl
WHERE (tbl.recdate <= {d ''9999-12-31''})
')
union
select
vehicle
, '5 digit date' as recdate
from OPENQUERY([TEST],
'SELECT
tbl.vehicle,
tbl.recdate
FROM Vehicles tbl
WHERE (tbl.recdate > {d ''9999-12-31''})
')
我尝试在 openquery 之外测试 recdate 会产生“将数据类型 DBTYPE_DBDATE 转换为日期时出错”。我已经尝试过 is_date() 和 try_cast(),但两者都不是为了处理已经在日期字段中的无效日期。
在开放式查询中,我尝试使用 CONVERT、CAST 和 CASE 语句,但专有数据库似乎不支持这些语句。
有什么建议么?
问候 HamsterJam