设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[Access本身] 请教vba中的DateDiff函数

[复制链接]
跳转到指定楼层
1#
发表于 2023-9-4 20:48:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大佬,请赐教:
date1=#2023-07-26#
date2=#2023-09-03#
DateDiff("m", date1, date2),返回的数值是2,
但我的意愿是,到了2023-09-26才是满2个月,所以要求如上date1和date2,相隔月数为1,还要满足大小月,该如何处理呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2023-9-7 21:29:53 | 只看该作者
DateDiff("m", date1, date2)表示只看月份不看天数的。如果非要看天数,应该用DateAdd来表示,当日期达到DateAdd的时候,满足2个月。否则不满足。例如:
  1. DateAdd("m",2,#2023/7/26#)
复制代码

然后判断当前日期(比如,Date()函数)是否等于这个DateAdd。
3#
 楼主| 发表于 2023-9-8 10:15:28 | 只看该作者
roych 发表于 2023-9-7 21:29
DateDiff("m", date1, date2)表示只看月份不看天数的。如果非要看天数,应该用DateAdd来表示,当日期达到D ...

谢谢哥!!!
我代码是这样写的:
        criteria = "日期条件"
        ssql = "update 数据表 set 单价=单价+100*DateDiff("m", 日期B, date()) where " & criteria
        CurrentDb.Execute ssql
就是看日期B和今天相差多少个整月,原则上是多一个月,则单价多100,一下子更新好多记录的,如果按哥您的方法,应该如何修改这个代码达到要求呢?还请再指教一下,谢谢了!
4#
 楼主| 发表于 2023-9-8 10:15:48 | 只看该作者
roych 发表于 2023-9-7 21:29
DateDiff("m", date1, date2)表示只看月份不看天数的。如果非要看天数,应该用DateAdd来表示,当日期达到D ...

谢谢哥!!!
我代码是这样写的:
        criteria = "日期条件"
        ssql = "update 数据表 set 单价=单价+100*DateDiff("m", 日期B, date()) where " & criteria
        CurrentDb.Execute ssql
就是看日期B和今天相差多少个整月,原则上是多一个月,则单价多100,一下子更新好多记录的,如果按哥您的方法,应该如何修改这个代码达到要求呢?还请再指教一下,谢谢了!
5#
 楼主| 发表于 2023-9-8 11:14:24 | 只看该作者
主要是不知道如何可以在“ssql”中一行代码可以搞定,还请指教!
6#
发表于 2023-9-8 20:05:11 | 只看该作者
smilingkiss 发表于 2023-9-8 10:15
谢谢哥!!!
我代码是这样写的:
        criteria = "日期条件"

并不难。用iif判断下就好了:
iif(day(日期)<=day(date()), DateDiff("m", 日期B, date()), DateDiff("m", 日期B, date())-1)
这个很容易理解。比如,
date1=#2023-07-26#
date2=#2023-09-03#
date3=#2023-09-28#
由于date2的天数是3,小于26,因此,在原来的基础上减去1,即不满2个月。
由于date3的天数是28,大于26,因此,不需要减去,表示已满2个月。
7#
 楼主| 发表于 2023-9-11 14:41:26 | 只看该作者
roych 发表于 2023-9-8 20:05
并不难。用iif判断下就好了:
iif(day(日期)

谢谢哥!致敬,感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 16:45 , Processed in 0.107822 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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