首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将int铸成SmallDateTime

将int铸成SmallDateTime
EN

Stack Overflow用户
提问于 2013-02-14 23:32:12
回答 4查看 7.4K关注 0票数 0

我试图将L.LoanDueDate (即smalldatetime)与ufnARCUGetLatestProcessDate() ( int)的返回值进行比较,以查看贷款到期日超过最后一个处理日期的天数。

我收到一个

算术溢出错误将表达式转换为数据类型

错误,似乎找不出答案。任何帮助都是有用的。提前谢谢你。

代码语言:javascript
复制
CAST(L.LoanDueDate - CAST(CAST((SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AS VARCHAR(10)) AS smalldatetime) AS INT)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-15 00:01:57

我解决了这个问题。DigCamare对DATEDIFF的评论提醒我,这就是我需要做的,即使您可以将int转换为一个小时间,以便进行比较。

代码语言:javascript
复制
DATEDIFF(d,L.LoanDueDate,CONVERT(smalldatetime,convert(varchar(10),(SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()))))
票数 0
EN

Stack Overflow用户

发布于 2013-02-14 23:48:45

您不能将int与小时间进行比较。您需要比较两个日期,为此您必须使用达迪夫

票数 0
EN

Stack Overflow用户

发布于 2013-02-14 23:54:06

可以将日期列强制转换为int。它将给出接近日期(四舍五入),没有时间部分,作为一个int。

编辑:

这将给出日期作为一个数字供您比较:

代码语言:javascript
复制
SELECT FLOOR(CAST(L.LoanDueDate as float)) -
(SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AS myValue
FROM ...

关键是将日期转换为数字,而不是到目前为止的数字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14885984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档