我试图将L.LoanDueDate (即smalldatetime)与ufnARCUGetLatestProcessDate() ( int)的返回值进行比较,以查看贷款到期日超过最后一个处理日期的天数。
我收到一个
算术溢出错误将表达式转换为数据类型
错误,似乎找不出答案。任何帮助都是有用的。提前谢谢你。
CAST(L.LoanDueDate - CAST(CAST((SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AS VARCHAR(10)) AS smalldatetime) AS INT)发布于 2013-02-15 00:01:57
我解决了这个问题。DigCamare对DATEDIFF的评论提醒我,这就是我需要做的,即使您可以将int转换为一个小时间,以便进行比较。
DATEDIFF(d,L.LoanDueDate,CONVERT(smalldatetime,convert(varchar(10),(SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()))))发布于 2013-02-14 23:48:45
您不能将int与小时间进行比较。您需要比较两个日期,为此您必须使用达迪夫。
发布于 2013-02-14 23:54:06
可以将日期列强制转换为int。它将给出接近日期(四舍五入),没有时间部分,作为一个int。
编辑:
这将给出日期作为一个数字供您比较:
SELECT FLOOR(CAST(L.LoanDueDate as float)) -
(SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AS myValue
FROM ...关键是将日期转换为数字,而不是到目前为止的数字。
https://stackoverflow.com/questions/14885984
复制相似问题