跳到主要内容

日期函数

日期函数简介

关于日期函数的两个基本概念:

  • 时间戳(timestamp):时间戳是计算机记录时间的一种格式。通常是一个字符序列,唯一地标识某一刻的时间。在智管工表单中,「日期时间」字段便是由这样的序列来存储的。
  • 日期对象:可以理解为年月日时分秒;日期对象的格式为 Fri Feb 10 2023 00:00:00 GMT+0800 (中国标准时间) ,即北京时间 2023年2月10日00:00:00。

日期时间字段的返回值为日期对象,单位是毫秒;本文中的日期函数的参数均可直接使用日期字段。如,YEAR(日期时间字段)

DATE

DATE函数可用于将时间戳转换为日期对象。

函数用法:

DATE(str|timestamp)

**函数示例:**如2023年1月1日的日期对象可以用如下公式表示:

  • DATE(日期时间)
  • DATE("2023-01-01")
  • DATE(1672531200000)

这三个公式都表示“Sun Jan 01 2023 00:00:00 GMT+0800”。

DATEDELTA

DATEDELTA 函数可以在指定日期的基础上增加/减少时间(年、月、日等)。

函数用法:

DATEDELTA(date, deltadays, [unit])

其中各参数的含义如下:

  • date: 必需,初始日期;

  • deltadays:必需,需要加减的时间,正数为增加,负数为减少。

  • unit:可选,需要加减的时间单位,默认为"d",可设置的参数如下:

    • “y”:年数
    • “M”:月数
    • “d”:天数
    • “h”:小时数
    • “m”:分钟数
    • “s”:秒数

函数示例: 如生产场景中,录入生产日期和保质期后,可通过 DATEDELTA 函数计算产品的过期时间:DATEDELTA(生产日期, 15, 'd')

注:DATEDELTA 函数须在日期时间字段内使用。

DATEDIF

DATEDIF 函数可用于计算两个时间的差值。

函数用法:

DATEDIF(start_date, end_date, [unit])

其中各参数的含义如下:

  • start_date:必需, 开始时间;

  • end_date:必需,结束时间;

  • unit:可选,默认为 “d”,可设置的参数如下:

    • “y”:年数
    • “M”:月数
    • “d”:天数
    • “h”:小时数
    • “m”:分钟数
    • “s”:秒数

函数示例: 通过 DATEDIF 函数计算时间差的年数、月数、天数等,可应用于计算项目的消耗天数、活动的举办天数等。

NOW

NOW 函数可返回当前时间。

NOW()

函数用法:

函数示例: 如签到场景中,可通过 NOW 函数生成当前时间,完成签到。

注:在日期时间字段中使用 NOW 函数时,时间类型可在字段属性中设置。

YEAR

YEAR 函数可用于返回日期时间中的年份。

函数用法:

YEAR(date)

函数示例: 如计算生产时间中对应的年份,可设置公式为YEAR(生产日期),即 2023-02-10 对应的年份为2023。

MONTH

MONTH 函数可用于返回日期中的月份, 值是介于 1 到 12 之间的整数。

函数用法:

MONTH(date)

函数示例: 如计算考勤日期对应的月份,可设置公式为MONTH(考勤时间),即 2023-01-02 对应的月份为 1。

DAY

DAY 函数可用于返回日期中的天数, 值是介于 1 到 31 之间的整数。

函数用法:

DAY(date)

函数示例: 如计算签到日期中对应的天数,可设置公式为DAY(签到日期),即 2023-01-20 对应的天数为 20。

HOUR

HOUR 函数可用于返回日期时间中的小时数。

函数用法:

HOUR(date)

函数示例: 如计算打卡时间中对应的小时数,可设置公式为HOUR(打卡时间),即 2023-01-01 14:38:01 对应的小时数为 14。

MINUTE

MINUTE 函数可用于返回日期时间中的分钟数。

函数用法:

MINUTE(date)

函数示例: 如计算打卡时间中对应的分钟数,可设置公式为MINUTE(打卡时间),即 2023-01-05 16:14:24 对应的分钟数为 14。

SECOND

SECOND 函数可用于返回日期时间中的秒数。

函数用法:

SECOND(date)

函数示例: 如计算签到时间中对应的秒数,可设置公式为SECOND(签到时间),即 2023-02-03 08:49:44 对应的秒数为 44。

DAYS

DAYS 函数可计算两个日期之间的天数。

函数用法:

DAYS(end_date, start_date)

其中各参数的含义如下:

  • end_date: 必需,结束日期;
  • start_date: 必需,起始日期。

函数示例: 如考勤请假场景中,手动输入请假开始、结束日期,设置公式为DAYS(结束日期,开始日期),即可计算出请假天数。

DAYS360

DAYS360 函数可按照一年 360 天的算法(每个月 30 天,一年 12 个月),返回两个日期间相差的天数。

函数用法:

DAYS360(end_timestamp, start_timestamp, method)

其中各参数的含义如下:

  • end_timestamp: 必需,结束日期;
  • start_timestamp: 必需,起始日期;
  • method: 可选,用于指定在计算中采用美国方法或欧洲方法,具体规则如下:
方法定义
fase或不填美国 (NASD) 方法。 如果起始日期是一个月的最后一天,则等于同月的 30 号。 如果终止日期是一个月的最后一天,并且起始日期早于 30 号,则终止日期等于下一个月的 1 号,否则,终止日期等于本月的 30 号。
true欧洲方法。 如果起始日期和终止日期为某月的 31 号,则等于当月的 30 号。

函数示例: 在会计计算中,财会系统一般按照一年 12 个月,每月 30 天计算,可使用 DAYS360 函数计算支付款项等。

ISOWEEKNUM

ISOWEEKNUM 函数可用于计算日期在全年中的 ISO 周数。

其中,ISO 周数根据 ISO 8601 的规则计算得出,具体计算方法如下:

  • 每年可能有 52 周或 53 周;
  • 周一至周日为一个完整周;
  • 每周的周一是该周的第 1 天,周日是该周的第 7 天;
  • 每年的第一周为当年的第一个周四所在的周:如 2017 年 1 月 5 日为当年的第一个周四,那么 2017-01-02 至 2017-01-08 为 2017 年第一周;
  • 每年的最后一周为当年最后一个周四所在的周:如 2016 年 12 月 29 日为当年的最后一个周四,那么 2016-12-26 至 2017-01-01 为 2016 年的最后一周。

函数用法:

 ISOWEEKNUM(date)

函数示例: ISOWEEKNUM 函数可用于计算政府和商务的会计年度,用以维持时序。如ISOWEEKNUM('2023-01-05),返回结果是1。

NETWORKDAYS

NETWORKDAYS 函数可计算两个日期之间完整的工作日数值,其中,工作日不包括周末和专门指定的假期。

函数用法:

NETWORKDAYS(start_date, end_date, [holidays], [change_workday])

其中各参数的含义如下:

  • start_timestamp:必需, 开始日期;
  • end_timestamp:必需,结束日期;
  • holidays:可选,可填写需要从工作日中排除的一个或多个日期,如各种省/市/自治区和国家/地区的法定假日及非法定假日。
  • change_workday:可选,是否考虑法定节假日调休,可填0(否)或1(是),默认为1。为1 时会根据国务院发布的放假、调休通知自动计算工作日(只提供最近3年的法定节假日计算,超过这个区间,无法准确计算调休日期)。

函数示例: 如,NETWORKDAYS(开始时间,结束时间,[DATE("2023-06-22"),DATE("2023-06-23")]),开始时间是2023-06-19,结束时间是2023-06-23,返回结果是3

TIMESTAMP

TIMESTAMP 函数可将日期对象转换成时间戳。

函数用法:

TIMESTAMP(date)

函数示例: 在公式中想对日期时间字段进行比较时,可通过 TIMESTAMP 函数将日期对象转换为时间戳格式,以便于比较日期字段的大小。

TIME

TIME 函数可返回特定时间的十进制数字。时间值为日期值的一部分,并用十进制数表示(例如 12:00 PM 可表示为 0.5,因为此时是一天的一半)。

函数用法:

TIME(hour, minute, second)

其中各参数的含义如下:

  • hour: 必需,代表小时;任何大于 23 的值都会除以 24,商作为天数,余数作为小时数。 例如,TIME(27,0,0) = 1.125, TIME(3,0,0) = 0.125,即天数不同,小数部分的时间相同;
  • minute: 必需,代表分钟;任何大于 59 的值将转换为小时和分钟。 例如,TIME(0,750,0) = TIME(12,30,0) = 0.520833;
  • second: 必需,代表秒;任何大于 59 的值将转换为小时、分钟和秒。 例如,TIME(0,0,2000) = TIME(0,33,20) = 0.023148。

函数示例: 如,生产场景中,可通过 TIME 函数计算产品的待机时长。

TODAY

TODAY 函数可用于获取当前系统的日期,可精确到秒,时间为今日的起始时间。

函数用法:

TODAY()

函数示例:

1)TODAY 函数可直接在日期时间字段中使用,显示的日期精度由日期时间字段的「字段属性 >> 类型」决定:

如,当设置日期时间字段类型为「年-月-日-时-分-秒」时,TODAY 函数的使用效果如下:

2)也可搭配 TEXT 函数 将获取的日期转换为文本格式,如设置公式为TEXT(TODAY(),"yyyyMMddhhmmss"),即可获取日期的年月日时分秒。

WEEKNUM

WEEKNUM 函数可用于计算某日期在一年中处于第几周。

函数用法:

WEEKNUM(date, return_type)

其中各参数的含义如下:

  • date: 必需,指定日期;
  • return_type: 可选参数,确定一周从哪一天开始,具体参数值对应的日期如下表:
每周的第一天return_type
星期日1/17/为空
星期一2/11
星期二12
星期三13
星期四14
星期五15
星期六16

注:当 return_type 的值不在上述表格范围内或未填写该参数时,默认为从星期日开始计算。

函数示例: 当时间选定为 2023 年 1 月 2 日时,分别以星期日和星期一作为一周的第一天,得到的周次结果是不同的。

WORKDAY

WORKDAY 函数可计算在某日期(起始日期)之前或之后、与该日期相隔指定工作日的某一日期的日期值。 工作日不包括周末和专门指定的假日。

函数用法:

WORKDAY(start_date, days, [holidays])

其中各参数的含义如下:

  • start_date: 必需,起始日期;
  • days: 必需,起始日期之前或之后不含周末及节假日的天数。 Days 为正值将生成未来日期;为负值则生成过去日期;
  • holidays: 可选,其中包含需要从工作日历中排除的一个或多个日期,例如各种省/市/自治区和国家/地区的法定假日及非法定假日。该列表可以是由日期所构成的数组常量。

注:holidays 参数可通过如下两种方式输入:

  • 使用 DATE 函数或作为其他函数的结果输入;如,使用函数DATE("2023-08-11")输入 2012年8月11日;
  • 直接调用子表单中的日期时间字段或主表中的日期时间字段(多个主表字段使用中括号包裹)。

函数示例: 如,计算交货时间时,需将 2024 年 9 月 10 日制定为假期,则设置公式为WORKDAY(下单时间,处理工作日,[DATE("2024-09-10")]),扣除周末和假期,即可根据下单时间计算出对应的交货时间。