Office中国论坛/Access中国论坛

标题: 请教vba中的DateDiff函数 [打印本页]

作者: smilingkiss    时间: 2023-9-4 20:48
标题: 请教vba中的DateDiff函数
各位大佬,请赐教:
date1=#2023-07-26#
date2=#2023-09-03#
DateDiff("m", date1, date2),返回的数值是2,
但我的意愿是,到了2023-09-26才是满2个月,所以要求如上date1和date2,相隔月数为1,还要满足大小月,该如何处理呢?
作者: roych    时间: 2023-9-7 21:29
DateDiff("m", date1, date2)表示只看月份不看天数的。如果非要看天数,应该用DateAdd来表示,当日期达到DateAdd的时候,满足2个月。否则不满足。例如:
  1. DateAdd("m",2,#2023/7/26#)
复制代码

然后判断当前日期(比如,Date()函数)是否等于这个DateAdd。
作者: smilingkiss    时间: 2023-9-8 10:15
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,一下子更新好多记录的,如果按哥您的方法,应该如何修改这个代码达到要求呢?还请再指教一下,谢谢了!
作者: smilingkiss    时间: 2023-9-8 10:15
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,一下子更新好多记录的,如果按哥您的方法,应该如何修改这个代码达到要求呢?还请再指教一下,谢谢了!
作者: smilingkiss    时间: 2023-9-8 11:14
主要是不知道如何可以在“ssql”中一行代码可以搞定,还请指教!
作者: roych    时间: 2023-9-8 20:05
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个月。
作者: smilingkiss    时间: 2023-9-11 14:41
roych 发表于 2023-9-8 20:05
并不难。用iif判断下就好了:
iif(day(日期)

谢谢哥!致敬,感谢!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3