求助少一天的问题-----------关于SQL日期计算的麻烦应用

cowbo2 2014-12-15 10:13:40
是这样的,客户的一个日期计算,他们的月数,总是少一天的,但我得出的结果总是要么多要么少,怎么办?

比如:
客户说的,3个月
是2014/1/1~2014/3/30

2个月:
2014/8/15~2014/10/14


软件是用DELPHI做的,我直接用日期计算出月数差,然后直接+1,结果有时对有时错,
我想在SQL里做计算,怎么解决这个问题?有没可靠的方式实现?

谢谢...
...全文
278 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cy2889792 2014-12-19
  • 打赏
  • 举报
回复

DECLARE @SDATE VARCHAR(10)	--开始时间
DECLARE @EDATE VARCHAR(10)	--结束时间
DECLARE @MAX_DIFF INT		--最大允许误差的天数
SET @SDATE='2014-08-15'
SET @EDATE='2014-10-14'
SET @MAX_DIFF=2				--根据楼主客户的需求,暂定最大误差天数为2
SELECT (CASE WHEN DATEDIFF(MONTH,@SDATE,DATEADD(DAY,@MAX_DIFF,@EDATE))>DATEDIFF(MONTH,@SDATE,@EDATE) THEN DATEDIFF(MONTH,@SDATE,@EDATE)+1 ELSE DATEDIFF(MONTH,@SDATE,@EDATE) END)
很简单,上面这条语句可以搞定,你要让客户确定,最大允许误差天数。这样就可以
jph1122 2014-12-19
  • 打赏
  • 举报
回复
WHERE 时间>='2014-01-01' ANF 时间<'2014-04-01'
wtujedp 2014-12-16
  • 打赏
  • 举报
回复
求两个日期之间的天数?两个日期间的天数差 select DATEDIFF(day,'2014-1-1','2014-3-30') 还是某个日期前推或是后推(2个月或是3个月)后的另一个日期? select DATEADD(MM,2,'2014-2-15')--这个是2个月后的另一个日期 select DATEADD(day,60,'2014-2-15')--这个是60天后的另一个日期
tcmakebest 2014-12-15
  • 打赏
  • 举报
回复
每个月的天数不同,这个问题楼主应该知道的. 如果是一个月, 从1月31月起, 应该到2月几号呢?
tds__609 2014-12-15
  • 打赏
  • 举报
回复
那按照你的这两个例子,这样就行了

 select dateadd(month,3,'2014-01-01')-1
cowbo2 2014-12-15
  • 打赏
  • 举报
回复
引用 1 楼 tds__609 的回复:
先找明白客户的需求为好, 比如: 客户说的,3个月 是2014/1/1~2014/3/30 为什么3月31日不算??
我搞错了,以为3月没有31号, 你的是对的,应该是3月31号..写错了
tds__609 2014-12-15
  • 打赏
  • 举报
回复
先找明白客户的需求为好, 比如: 客户说的,3个月 是2014/1/1~2014/3/30 为什么3月31日不算??

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧