日期函数

爱搭贝
更新于2025-08-23

日期函数简介

  • 日期时间字段 的返回值为时间戳(timestamp),单位是毫秒;本文中的日期函数的参数均可直接使用日期字段。如,YEAR(日期时间字段)。
  • 下面介绍关于日期函数的两个基本概念:
  • 时间戳(timestamp):时间戳是计算机记录时间的一种格式。通常是一个字符序列,唯一地标识某一刻的时间。在搭贝表单中,「日期时间」字段便是由这样的序列来存储的。
  • 日期对象:可以理解为年月日时分秒;日期对象的格式为 Sat Aug 01 2015 00:00:00 GMT+0800,即北京时间 2015 年 8 月 1 日 00:00:00,日期对象可以进行各种运算,比如日期加减法等等。

DATE

  • DATE 函数可用于将时间戳转换为日期对象。
  • 函数用法:
  • DATE(timestamp)
  • 通过以下公式可将年月日(时分秒)转换为日期对象:
  • DATE(year,month,day)
  • DATE(year,month,day,hour,minute,second)
  • 其中各参数的含义如下:
  • 函数示例:如 2023 年 1 月 1 日的日期对象可以用如下公式表示:
  • 这三个公式都表示“Sun Jan 01 2023 00:00:00 GMT+0800”。
DATE@1x.png

DAY

  • DAY 函数可用于返回日期中的天数, 值是介于 1 到 31 之间的整数。
  • 函数用法:
  • DAY(timestamp)
  • 函数示例:如计算签到日期中对应的天数,可设置公式为DAY(签到日期),即 2023-01-20 对应的天数为 20。
DAY@1x.png

DAYS

  • DAYS 函数可计算两个日期之间的天数。
  • 函数用法:
  • DAYS(end_timestamp, start_timestamp)
  • 其中各参数的含义如下:
  • 函数示例:如考勤请假场景中,手动输入请假开始、结束日期,设置公式为DAYS(结束日期,开始日期),即可计算出请假天数。
DAYS@1x.png

DAYS360

  • 用法:DAYS360(end_timestamp, start_timestamp, method)
  • 说明:按照一年 360 天的算法(每个月以 30 天计,一年共计 12 个月),DAYS360 函数返回两个日期间相差的天数,这在一些会计计算中将会用到。如果财会系统是基于一年 12 个月,每月 30 天,可使用此函数帮助计算支付款项。
    • end_timestamp: 必需。结束日期。
    • start_timestamp: 必需。起始日期。
    • method: 可选。用于指定在计算中是采用美国方法还是欧洲方法。不填或false表示是美国方法,true表示是欧洲方法。
  • 注意:1、使用美国方法时,如果起始日期是一个月的第 31 天,则将这一天与同一个月份的第 30 天视为同一天;如果起始日期早于一个月的第 30 天,且终止日期是一个月的第 31 天,则将终止日期视同于下一个月的第 1 天;如果起始日期为一个月的第 30 天,且终止日期是一个月的第 31 天,则将终止日期视同于终止日期所在月的第 30 天。2、使用欧洲方法时,起始日期或终止日期是一个月的第 31 天时,都将其视同于当月的第 30 天。
DAYS360@1x.png

DATEDIF

  • DATEDIF 函数可用于计算两个时间的差值。
  • 函数用法:
  • DATEDIF(start_timestamp, end_timestamp, [unit])
  • 其中各参数的含义如下:
    • start_timestamp 必需。一个代表开始时间的日期。
    • end_timestamp 必需。一个代表结束时间的日期。
    • unit 可选。一个可选参数,默认为 “d”,可以是 “y” 、“M”、“d”、“MD”、“YD”、“YM”,分别代表计算两个日期相差的年数、月数、天数、间隔天数(忽略日期中的月份和年份)、间隔天数(忽略日期中的年份)、间隔月数(忽略日期中的年份)。
  • 函数示例:通过 DATEDIF 函数计算时间差的年数、月数、天数等,可应用于计算项目的消耗天数、活动的举办天数等。
DATEDIF@1x.png

HOUR

  • HOUR 函数可用于返回日期时间中的小时数。
  • 函数用法:
  • HOUR(timestamp)
  • 函数示例:如计算打卡时间中对应的小时数,可设置公式为HOUR(打卡时间),即 2023-01-01 14:38:01 对应的小时数为 14。
HOUR@1x.png

MINUTE

  • MINUTE 函数可用于返回日期时间中的分钟数。
  • 函数用法:
  • MINUTE(timestamp)
  • 函数示例:如计算打卡时间中对应的分钟数,可设置公式为MINUTE(打卡时间),即 2023-01-05 16:14:24 对应的分钟数为 14。
MINUTE@1x.png

MONTH

  • MONTH 函数可用于返回日期中的月份, 值是介于 1 到 12 之间的整数。
  • 函数用法:
  • MONTH(timestamp)
  • 函数示例:如计算考勤日期对应的月份,可设置公式为MONTH(考勤时间),即 2023-01-02 对应的月份为 1。
MONTH@1x.png

NETWORKDAYS

  • NETWORKDAYS 函数可计算两个日期之间完整的工作日数值,其中,工作日不包括周末和专门指定的假期。
  • 函数用法:
  • NETWORKDAYS(start_timestamp, end_timestamp, [holidays])
  • 其中各参数的含义如下:
  • 注:holidays 参数可通过如下两种方式输入:
  • 函数示例:如,计算某员工 6 月外包工资时,需将 2023 年 6 月 22 日和 2023 年 6 月 23 日制定为假期,则设置公式为NETWORKDAYS(开始时间,结束时间,[DATE(2023,6,22),DATE(2023,6,23)]),即可根据开始、结束时间计算出对应的工作天数和工资。
NETWORKDAYS@1x.png

SYSTIME

  • SYSTIME 函数可返回当前服务器时间。即使客户端的时间被人为调整了,SYSTIME 函数不受影响,获取的仍然是服务器时间。
  • 函数用法:
  • SYSTIME()
  • 函数示例:如签到、打卡等场景中,可通过 SYSTIME 函数完成记录系统时间,有效避免作弊的情况。
  • 注:在日期时间字段中使用 SYSTIME 函数时,时间类型可在字段属性中设置。
SYSTIME@1x.png

SECOND

  • SECOND 函数可用于返回日期时间中的秒数。
  • 函数用法:
  • SECOND(timestamp)
  • 函数示例:如计算签到时间中对应的秒数,可设置公式为SECOND(签到时间),即 2023-02-03 08:49:44 对应的秒数为 44。
SECOND@1x.png

TIMESTAMP

  • TIMESTAMP 函数可将日期对象转换成时间戳。
  • 函数用法:
  • TIMESTAMP(date)
  • 函数示例:在日期时间字段自定义时间时,可通过 TIMESTAMP 函数将日期对象转换为时间戳格式,以便于字段生成具体时间。
TIMESTAMP@1x.png

TODAY

  • TODAY 函数可用于获取当前系统的日期,可精确到秒。
  • 函数用法:
  • TODAY()
  • 函数示例:
  • 1)TODAY 函数可直接在日期时间字段中使用,显示的日期精度由日期时间字段的「字段属性 >> 类型」决定:
  • 如,当设置日期时间字段类型为「年-月-日-时-分-秒」时,TODAY 函数的使用效果如下:
  • 2)也可搭配 TEXT 函数 将获取的日期转换为文本格式,如设置公式为TEXT(TODAY(),"yyyyMMddhhmmss"),即可获取日期的年月日时分秒。
  • 注:日期与文本格式的相互转换,可参考文档:文本与日期格式相互转换。
TODAY@1x.png

WEEKDAY

  • WEEKDAY 函数可用于计算日期的星期数,返回 1到 7 之间的数值。
  • 函数用法:
  • WEEKDAY(日期时间)
  • 函数示例:如计算签到日期对应的星期数,可设置公式为WEEKDAY(签到日期),即 2023-05-26 对应的星期数为 6(星期五),2023-05-28 对应的星期数为 1(星期日)。
WEEKDAY@1x.png

WEEKNUM

  • 返回该日期在一年中的第几周。例如,包含 1 月 1 日的周为该年的第 1 周,其编号为第 1 周。
  • date: 必需。代表一周中的日期。手写时需要增加引号。
  • return_type: 可选。 一数字,确定星期从哪一天开始。 默认值为 1。当 return_type 为 1 或省略时,则周日被视为一周的第一天(美国习惯);当其为 2 时,则周一被视为一周的第一天。
  • 此函数所用机制:包含 1 月 1 日的周为该年的第 1 周,其编号为第 1 周。
  • 示例:
  • WEEKNUM("2012-3-9"),2012-3-9 所在一年中的周数,一周开始于星期日(默认值),返回 10。
  • WEEKNUM("2012-3-9",2),2012-3-9 所在一年中的周数,一周开始于星期一(第二个参数 2),返回 11。
  • 注意:
  • 如果 date 小于 1970 年 1 月 1 日时,则返回空。
  • 如果 return_type 超过指定的范围,则返回空。
WEEKNUM@1x.png

WORKDAY

  • WORKDAY 函数可计算在某日期(起始日期)之前或之后、与该日期相隔指定工作日的某一日期的日期值。 工作日不包括周末和专门指定的假日。
  • 函数用法:
  • WORKDAY(start_timestamp, days, holidays)
  • 其中各参数的含义如下:
  • 注:holidays 参数可通过如下两种方式输入:
  • 函数示例:如,计算交货时间时,需将 2023 年 4 月 5 日制定为假期,则设置公式为WORKDAY(下单时间,处理工作日,HOLIDAYS(2023,4,5)),扣除周末和设置的假期,即可根据下单时间计算出对应的交货时间。
WORKDAY@1x.png

YEAR

  • YEAR 函数可用于返回日期时间中的年份。
  • 函数用法:
  • YEAR(timestamp)
  • 函数示例:如计算生产时间中对应的秒年份,可设置公式为YEAR(生产日期),即 2023-02-10 对应的年份为 2023。
YEAR@1x.png

ADDDAY

  • 用法:ADDDAY(date,days)
  • 说明:将指定日期加/减指定天数,date 为指定日期,days 为指定天数,当为负数时在 date 上减去此天数
  • 场景:录入【任务开始时间】、【任务预计天数】,通过 ADDDAY 函数自动填入【任务预计完成时间】。
  • 注意:此函数如果使用在单行文本、多行文本组件中,需要搭配 TEXT 函数转换为文本使用,不然会输出时间戳格式的文本。
ADDDAY@1x.png

ADDMONTH

  • 用法:ADDMONTH(date,months)
  • 说明:将指定日期加/减指定月数,date 为指定日期,months 为指定月数,当为负数时在此 date 上减去此月数。
  • 场景:录入【项目开始时间】、【项目预计月数】,通过 ADDMONTH 函数自动填入【项目预计完成时间】。
  • 注意:此函数如果使用在单行文本、多行文本组件中,需要搭配 TEXT 函数转换为文本使用,不然会输出时间戳格式的文本。
ADDMONTH@1x.png

ADDYEAR

  • 用法:ADDYEAR(date,years)
  • 说明:将指定日期加/减指定年数,date 为指定日期,years 为指定年数,当为负数时在此 date 上减去此年数。
  • 场景:录入【合同开始时间】、【合同有效年限】,通过 ADDYEAR 函数自动填入【合同到期时间】。
  • 注意:此函数如果使用在单行文本、多行文本组件中,需要搭配 TEXT 函数转换为文本使用,不然会输出时间戳格式的文本。
ADDYEAR@1x.png

HOLIDAYS

  • 用法:HOLIDAYS(时间1,时间2,时间3)
  • 说明:当需要从工作日历中排除一个或多个日期的时候,可使用此函数,例如各种省/市/自治区和国家/地区的法定假日及非法定假日。该参数可以是由日期所构成的数组常量。
  • 示例:HOLIDAYS("2012-11-22","2012-12-4","2013-1-21")
  • 注意:此函数必须与 「NETWORKDAYS」「WORKDAY」函数搭配使用。
1.png

ADDHOUR

  • 用法:ADDHOUR(日期,整数)
  • 说明:此函数返回指定日期增加指定小时后的日期-时间值。
  • 示例:ADDHOUR( 2023-2-1 19:23:34,3)得出结果为 2023-2-1 22:23:34。
ADDHOUR@1x.png

EOMONTH

  • 用法:EOMONTH(start_date, number)
  • 说明:Start_date 必需。 表示开始日期的日期。 如果日期以文本形式输入,则会出现问题。number 必需。 start_date 之前或之后的月份数。 number 为正值将生成未来日期;为负值将生成过去日期;为0则生成当月日期。
  • 注意:如果 number 不是整数,将截尾取整。
  • 示例:EOMONTH(2023-04-23, 0)=2023-04-30扩展用法:获取本月第一天:ADDDAY(EOMONTH(2023-04-23, -1),1)获取上月第一天:ADDDAY(EOMONTH(2023-04-23, -2),1)获取下月第一天:ADDDAY(EOMONTH(2023-04-23, 0),1)
2.png

CALCWEEK

  • 用法:CALCWEEK(data, week)
  • 说明:获取周的开始日期文本和结束日期文本,week 填写的是第几周 例如:第一周或第二周或第三周等。
  • 场景:CALCWEEK(排期时间,"第一周"),【排期时间】是2024年6月10号的话,输出的六月第一周的结果是6.3--6.9号,5月27号-6月2号算五月最后一周。
CALCWEEK@1x.png

NETWORKDAYS.INTL

  • 用法:NETWORKDAYSINTL(start_date, end_date, weekend, holidays)
  • 说明:返回参数 start_date 和 end_date 之间完整的工作日数值。工作日不包括周末和专门指定的假期。可以使用函数 NETWORKDAYS,根据某一特定时期内雇员的工作天数,计算其应计的报酬。
  • start_date:必需。代表开始日期。手写时需要增加引号。
  • end_date:必需。代表终止日期。手写时需要增加引号。
  • holidays:可选。一个可选参数,其中包含需要从工作日历中排除的一个或多个日期,例如各种省/市/自治区和国家/地区的法定假日及非法定假日。该参数可以是由日期所构成的数组常量。
  • 如:开始日期 (2012-10-1) 和终止日期 (2013-3-1) 之间工作日的天数,返回 110。
image.png