两个日期之前的天数函数怎么写?

如何使用datesubdate写出来,考虑2月份平年和闰年,1月份是12.31-1.28,如果是2月份,那么就是1.29-2.26。3月份就是2.27-3.28,12月份是11.29-12.31,其他都是上个月的29号至本月28号的天数  ,如何写?日期控件是date,格式是  2025-01-20   ,利用这个控件写函数

FineReport 张宇 发布于 2025-1-20 11:37 (编辑于 2025-1-20 11:40)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
华莉星宸Lv7资深互助
发布于2025-1-20 11:37

DATEDIF(start_date,end_date,unit,method):返回两个指定日期间的天数、月数或年数。

Start_date:代表所指定时间段的初始日期。

End_date:代表所指定时间段的终止日期。

Unit:函数返回信息的类型。

method:可选参数,默认返回日期差值的绝对值。

若unit="Y",则DATEDIF返回指定时间段的年差数。

若unit="M",则DATEDIF返回指定时间段的月差数。

若unit="D",则DATEDIF返回指定时间段的日差数。

若unit="MD",则DATEDIF忽略年和月,返回指定时间段的日差数。

若unit="YM",则DATEDIF忽略年和日,返回指定时间段的月差数。

若unit="YD",则DATEDIF忽略年,返回指定时间段的日差数。

若method=1,则DATEDIF返回日期差值的绝对值。

若method=-1,则DATEDIF返回日期差值时,会考虑正负情况。

示例:

DATEDIF("2001/2/28","2004/3/20","Y")等于3,即在2001年2月28日与2004年3月20日之间有3个整年。

DATEDIF("2001/2/28","2004/3/20","M")等于37,即在2001年2月28日与2004年3月20日之间有36个整月。

DATEDIF("2001/2/28","2004/3/20","D")等于1116,即在2001年2月28日与2004年3月20日之间有1116个整天。

DATEDIF("2001/2/28","2004/3/20","MD")等于8,即忽略月和年后,2001年2月28日与2004年3月20日的差为8天。

DATEDIF("2001/1/28","2004/3/20","YM")等于2,即忽略日和年后,2001年1月28日与2004年3月20日的差为2个月。

DATEDIF("2001/2/28","2004/3/20","YD")等于21,即忽略年后,2001年2月28日与2004年3月20日的差为21天。

最佳回答
0
snrtuemcLv8专家互助
发布于2025-1-20 11:37(编辑于 2025-1-20 11:38)

DATEDIF(start_date,end_date,unit,method):返回两个指定日期间的天数、月数或年数。

Start_date:代表所指定时间段的初始日期。

End_date:代表所指定时间段的终止日期。

Unit:函数返回信息的类型。

method:可选参数,默认返回日期差值的绝对值。

若unit="Y",则DATEDIF返回指定时间段的年差数。

若unit="M",则DATEDIF返回指定时间段的月差数。

若unit="D",则DATEDIF返回指定时间段的日差数。

若unit="MD",则DATEDIF忽略年和月,返回指定时间段的日差数。

若unit="YM",则DATEDIF忽略年和日,返回指定时间段的月差数。

若unit="YD",则DATEDIF忽略年,返回指定时间段的日差数。

若method=1,则DATEDIF返回日期差值的绝对值。

若method=-1,则DATEDIF返回日期差值时,会考虑正负情况。

示例:

DATEDIF("2001/2/28","2004/3/20","Y")等于3,即在2001年2月28日与2004年3月20日之间有3个整年。

DATEDIF("2001/2/28","2004/3/20","M")等于37,即在2001年2月28日与2004年3月20日之间有36个整月。

DATEDIF("2001/2/28","2004/3/20","D")等于1116,即在2001年2月28日与2004年3月20日之间有1116个整天。

DATEDIF("2001/2/28","2004/3/20","MD")等于8,即忽略月和年后,2001年2月28日与2004年3月20日的差为8天。

DATEDIF("2001/1/28","2004/3/20","YM")等于2,即忽略日和年后,2001年1月28日与2004年3月20日的差为2个月。

DATEDIF("2001/2/28","2004/3/20","YD")等于21,即忽略年后,2001年2月28日与2004年3月20日的差为21天。

==========

你要的函数是

DATESUBDATE(date1,date2,op):返回两个日期之间的时间差。

op表示返回的时间单位:"s",以秒为单位。"m",以分钟为单位。"h",以小时为单位。"d",以天为单位。"w",以周为单位。

示例:

DATESUBDATE("2008-08-08","2008-06-06","h")等于1512。

最佳回答
0
Z4u3z1Lv6专家互助
发布于2025-1-20 11:53

SWITCH(month(today()),1,CONCATENATE(DATEINMONTH(MONTHDELTA(today(),-1),31),"至",DATEINMONTH(TODAY(),28)),

2,CONCATENATE(DATEINMONTH(MONTHDELTA(today(),-1),29),"至",DATEINMONTH(TODAY(),26)),

3,CONCATENATE(DATEINMONTH(MONTHDELTA(today(),-1),27),"至",DATEINMONTH(TODAY(),28)),

12,CONCATENATE(DATEINMONTH(MONTHDELTA(today(),-1),29),"至",DATEINMONTH(TODAY(),31)),

month(today()),CONCATENATE(DATEINMONTH(MONTHDELTA(today(),-1),29),"至",DATEINMONTH(TODAY(),28))

)

image.png

12.31重叠了

image.png

  • 3关注人数
  • 37浏览人数
  • 最后回答于:2025-1-20 11:53
    请选择关闭问题的原因
    确定 取消
    返回顶部