如何将JDE日期转换为存储过程中的SQL日期

时间:2012-11-26 03:09:59

标签: sql sql-server-2005

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

1 个答案:

答案 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,您可以使用