Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在存储过程中将JDE日期转换为SQL日期_Sql_Sql Server 2005 - Fatal编程技术网

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

如何在存储过程中将JDE日期转换为SQL日期,sql,sql-server-2005,Sql,Sql Server 2005,我已经为此工作了好几天,并尝试了所有我能找到的选择。我希望有人能澄清这一点。在存储过程中,我将数据从JDE拉入SQL表。其中一个字段是JDE date字段,我需要它以datetime格式进入SQL表。日期字段为IVEFTJ 我有以下几点: SELECT DISTINCT * FROM OPENQUERY(GDCJDE9PRODR, ' SELECT IVLITM, IVCITM, IVEFTJ, Convert(datetime,

我已经为此工作了好几天,并尝试了所有我能找到的选择。我希望有人能澄清这一点。在存储过程中,我将数据从JDE拉入SQL表。其中一个字段是JDE date字段,我需要它以datetime格式进入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'' 
')

您不能在OpenQuerySQL语句中使用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'' 
')

这里是供您使用的

没有SQL数据库——SQL只是结构化查询语言——许多数据库系统使用的查询语言——但SQL不是数据库产品。。。像这样的东西是非常特定于供应商的-所以我们真的需要知道您使用的是什么数据库系统(以及哪个版本)…您的JDE使用的是什么类型的日期格式-cyymmdd、julian、6位数字、日期等等?好吧,想想我自己被解雇了。根据SQLServerManagementStudio帮助,这是SQLServer2005。对这些论坛来说是相当陌生的,不喜欢被人骂。我相信JDE的日期格式是Julian,例如示例是111001或112160。这有帮助吗?谢谢-我理解上面的rational,但是我遇到了一个错误“向'datetime'列添加值导致溢出”。我通过引入数据,然后在存储过程中使用更多代码进行更新,来解决这个问题。我只是假设你的转换(datetime,DATEADD(day,IVEFTJ-729960,Convert(datetime,“1900-01-01”))103)是正确的。事实并非如此。你需要修理它。快速查看确认了这一点,并提示我转到SQLFIDLE并为您生成一个简单的语句。我已经编辑了我的原始答案。我希望它能帮助你,你已经恢复了我对这个过程的信心。我想我已经做到了——检查上面的勾号?