我已经在这方面工作了好几天,并尝试了我能找到的所有选项。我希望有人可以解决这个问题。在存储过程中,我将数据从JDE拉入SQL表。其中一个字段是JDE日期字段,我需要以日期时间格式进入SQL表。日期字段是IVEFTJ。
我有下列内容:
SELECT DISTINCT * FROM OPENQUERY(GDCJDE9PRODR, '
SELECT
IVLITM,
IVCITM,
IVEFTJ,
Convert(datetime,DATEADD(day,[IVEFTJ]-729960,Convert(datetime,"1900-01-01")),103) as BCDAte
FROM
PRODDTA.F4104
WHERE
IVXRT = ''UP''
')
答案 0 :(得分:0)
您不能在openquery SQL语句中使用SQL函数,因为此语句与您从中选择行的数据库相关。而是使用外部SQL语句中的函数,如下所示:
SELECT DISTINCT
IVLITM,
IVCITM,
IVEFTJ,
dateadd(day, convert(int, substring(IVEFTJ, 4, 3)), convert(datetime,convert(varchar(4), convert(int, substring(IVEFTJ, 1, 1))*100 + 1900 + convert(int, substring(IVEFTJ, 2, 2))) + '-01-01 00:00:00', 121)) as BCDAte
FROM OPENQUERY(GDCJDE9PRODR, '
SELECT
IVLITM,
IVCITM,
IVEFTJ,
IVEFTJ
FROM
PRODDTA.F4104
WHERE
IVXRT = ''UP''
')
以下是sqlfiddle,您可以使用