我的代码中存在问题,我想出来了:
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
这给我一个以下错误:
从字符串转换日期时转换失败。
如何解决这个问题?
答案 0 :(得分:0)
请检查列podate中的数据和有效性。此列中的任何一列都具有字符串值。这就是你得到这个错误的原因。
答案 1 :(得分:0)
尝试使用MSSQL服务器ISDATE()函数如果字符串不是日期则返回0,如果是日期则返回1并且可以转换。尝试运行以下select并检查不正确的字符串:
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
答案 2 :(得分:-1)
找到this thread:
SQL Server需要格式为mm / dd / yyyy的日期,因此您需要这样做 在提交之前将您的日期转换为此格式。
此错误的问题在于,如果日期的日期值为 &lt; = 12,它会自动转换为mm / dd / yyyy给你 您的代码工作的错误印象。它直到白天 命中13&gt;这个问题引起了它的丑陋。
听起来这可能是个问题,maby你应该看看podate结构。