1

我的代码有问题,我想通了:

SELECT
   pono,
   convert(varchar,podate,103) as podate,
   Convert(varchar,validity,103) as validity,
   OriginalPOno, Sitename, Vendorname 
FROM  dbo.tbl_POR_PO_MAIN 
WHERE originalpono not in (select originalpono from tbl_Despatch_POR_PO_Main)
  AND pono not in (select pono from tbl_Despatch_POR_PO_Main)
  AND status=15
  AND (DATEDIFF(day,getdate(),validity)<=1)
ORDER BY sitename, validity, originalpono 

这给了我以下错误:

从字符串转换日期时间时转换失败。

我该如何解决这个问题?

4

3 回答 3

0

请检查列中的数据和有效性。此列中的任何一个都具有字符串值。这就是您收到此错误的原因。

于 2012-08-03T06:38:23.283 回答
0

尝试使用 MSSQL 服务器 ISDATE() 函数,如果字符串不是日期,则返回 0,如果是日期并且可以转换,则返回 1。尝试运行以下选择并检查不正确的字符串:

select 'incorrect podate',  podate from dbo.tbl_POR_PO_MAIN where ISDATE(podate)=0
union all
select 'incorrect validity',  validity from dbo.tbl_POR_PO_MAIN where ISDATE(validity)=0
于 2012-08-03T07:56:12.793 回答
-1

找到这个线程

SQL Server 需要格式为 mm/dd/yyyy 的日期,因此您需要在提交之前将日期转换为这种格式。

此错误的问题在于,如果日期的日期值 <=12,它将自动转换为 mm/dd/yyyy,从而给您错误的印象,即您的代码正在运行。直到 13> 的那一天,问题才引起了它的丑陋。

听起来这可能是问题所在,也许你应该看看 Podate 结构。

于 2012-08-03T05:18:33.870 回答