2

我已经为此工作了几天,并尝试了我能找到的所有选项。我希望有人可以解决这个问题。在存储过程中,我将数据从 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'' 
')
4

1 回答 1

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

于 2012-11-26T21:37:26.037 回答