我在Server中有一个存储过程,它调用Oracle数据库并返回结果集。
存储过程是
DECLARE
@IntStartDate Varchar(50),
@IntEndDate Varchar(50),
@ConStartDate Varchar(50),
@ConEndDate Varchar(50),
@Query Varchar(Max)
--Convert SQL to UNIX Time
SET @IntStartDate = CONVERT(varchar(50), @StartDate, 23)
SET @IntEndDate = CONVERT(varchar(50), DATEADD(day, 1, @EndDate), 23)
SET @ConStartDate = (DATEDIFF(SECOND,'1970-01-01', @IntStartDate))
SET @ConEndDate = (DATEDIFF(SECOND,'1970-01-01', @IntEndDate ))
SET @Query = 'select *
from openquery([linkedserver],
''
SELECT
sm.movement_type as "Movement Type",
sm.reference as "RMA Number",
cri.reason_code as "RMA Reason",
cri.sales_document_num as "Order Number",
sh.customer_account as "Customer Account",
sm.product_code as "SKU",
cri.long_description_1 as "Product Name",
to_char(trunc(date ''1970-01-01'' + sm.movement_date * interval ''1'' second),''DD/MM/YYYY'') as "Movement Date",
sm.quantity as "Quantity",
sm.change_user as "User",
sm.warehouse_code as "Warehouse",
sm.receipt_location as "Location"
FROM
STOCK_MOVEMENT SM
left join CUSTOMER_RETURN_ITEM CRI on sm.reference = cri.rma_num
left join sales_header sh on cri.sales_document_num = sh.sales_document_num
WHERE sm.reference like ''5%''
AND sm.change_user not in (''l.hill'', ''d.newell'', ''p.willman'', ''s.parkinson'')
AND sm.movement_type = ''RMASTK''
AND sm.movement_date BETWEEN ' + cast(@ConStartDate as varchar)+ ' and ' + cast(@conEndDate as varchar) + '
'')
'
然而,我得到了这个错误:
Msg 102,15级,状态1,16号线
不正确的语法接近'1970‘。
日期部分似乎在另一个存储过程中工作,我对它们进行了比较。但对于我的生活,我看不出有什么不同。
任何帮助都很感激。
C
发布于 2021-07-20 02:55:44
这个错误与商数有关,它需要是4,而不是2,否则它会逃过这个字段。
https://stackoverflow.com/questions/68453380
复制