设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2101|回复: 7
打印 上一主题 下一主题

[Access本身] [已解决]datediff计算足月的时候居然四舍五入?大侠们速度帮帮本菜鸟!help!

[复制链接]
跳转到指定楼层
1#
发表于 2009-1-31 09:27:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sygudeng 于 2009-2-17 22:10 编辑

2007-7-22,2007-9-4两者间隔44天,应该计算为1足月
但是使用datediff("m",开始日期,结束日期)的时候则计算为2

我找不出问题在哪里,请各位指教一下
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-1-31 09:34:40 | 只看该作者
本帖最后由 rcylbx 于 2009-1-31 09:41 编辑

datediff计算出应该不是足月,而是间隔月数,计算上月最后1天和下月第一天,虽然之间只差1天,但DateDiff结果是差1月,如果想得到你说的足月,应进一步改造一下函数,如果不考月度之间的天数差异,比如定30天为足月,利用取整函数应该能做到,如果,考虑每个月的天数差异比如2月有28天等情况,函数将更复杂。
3#
发表于 2009-1-31 09:44:07 | 只看该作者
没办法,内建的函数又很多地方是微软按照惯例来做了,很难面面俱到。你可以用下现的函数组合实现一下。

datediff("m",d1,iif(day(d2)<day(d1),dateadd("m",-1,d2+day(d1)-day(d2)),d2-(day(d2)-day(d1))))

d1=#2007-7-22#
d2=#2007-9-4#
?datediff("m",d1,iif(day(d2)<day(d1),dateadd("m",-1,d2+day(d1)-day(d2)),d2-(day(d2)-day(d1))))
1
d1=#7/4/2007#
d2=#9/14/2007#
?datediff("m",d1,iif(day(d2)<day(d1),dateadd("m",-1,d2+day(d1)-day(d2)),d2-(day(d2)-day(d1))))
2







*****************
*  一切皆有可能 *
*****************


QQ群 48866293 / 12035577 / 7440532 / 13666209
http://forum.csdn.net/SList/Access .
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
http://www.office-cn.net .

http://www.office-cn.net/home/space.php?uid=141646 .
4#
发表于 2009-1-31 09:55:08 | 只看该作者
学习了
5#
 楼主| 发表于 2009-1-31 13:59:33 | 只看该作者
哦啊!太感动了!多谢指教!
6#
 楼主| 发表于 2009-2-10 09:19:51 | 只看该作者
老大,2008-7-29 到 2009-02-10 计算结果不对啊~应该是6 计算为7
7#
发表于 2009-2-10 12:59:30 | 只看该作者
d1=#2008-7-29#
d2=#2009-02-10#
?datediff("m",d1-day(d1)+1 , d2-day(d2)+1) - iif(day(d2)<day(d1),1,0)
6
?datediff("m",d1-day(d1)+1 , d2-day(d2)+1) -- (day(d2)<day(d1))
6



******************
*  一切皆有可能  *
******************

.

.
QQ群 48866293 / 12035577 / 7440532 / 13666209
http://forum.csdn.net/SList/Access .
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
http://www.office-cn.net .
.
http://www.office-cn.net/home/space.php?uid=141646 .

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
8#
 楼主| 发表于 2009-2-10 13:16:03 | 只看该作者
多谢大大赐教这次仔细参详大大实例得出一个比较傻瓜的办法
d1=#2008-7-29#
d2=#2009-2-10#
?DateDiff("m", d1, IIf(Day(d2) < Day(d1), DateAdd("m", -1, d2), d2))
6
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-18 16:31 , Processed in 0.088998 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表