日期函数
日期函数简介
日期时间字段 的返回值为时间戳(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)
其中各参数的含义如下:
- year: 必需,年份;
- month: 必需,月份;
- day: 必需,天数;
- hour: 非必需,小时;
- minute: 非必需,分钟;
- second: 非必需,秒。
函数示例:如 2023 年 1 月 1 日的日期对象可以用如下公式表示:
- DATE(日期时间)
- DATE(2023,1,1)
- DATE(2023,1,1,0,0,0)
这三个公式都表示“Sun Jan 01 2023 00:00:00 GMT+0800”。点击体验效果
DAY
DAY 函数可用于返回日期中的天数, 值是介于 1 到 31 之间的整数。
函数用法:
DAY(timestamp)
函数示例:如计算签到日期中对应的天数,可设置公式为DAY(签到日期),即 2023-01-20 对应的天数为 20。点击体验效果
DAYS
DAYS 函数可计算两个日期之间的天数。
函数用法:
DAYS(end_timestamp, start_timestamp)
其中各参数的含义如下:
- end_timestamp: 必需,结束日期;
- start_timestamp: 必需,起始日期。
函数示例:如考勤请假场景中,手动输入请假开始、结束日期,设置公式为DAYS(结束日期,开始日期),即可计算出请假天数。点击体验效果
DAYS360
DAYS360 函数可按照一年 360 天的算法(每个月 30 天,一年 12 个月),返回两个日期间相差的天数。
函数用法:
DAYS360(end_timestamp, start_timestamp, method)
其中各参数的含义如下:
- end_timestamp: 必需,结束日期;
- start_timestamp: 必需,起始日期;
- method: 可选,用于指定在计算中采用美国方法或欧洲方法,具体规则如下:
方法 | 定义 |
false 或不填 | 美国 (NASD) 方法。 如果起始日期是一个月的最后一天,则等于同月的 30 号。 如果终止日期是一个月的最后一天,并且起始日期早于 30 号,则终止日期等于下一个月的 1 号,否则,终止日期等于本月的 30 号。 |
true | 欧洲方法。 如果起始日期和终止日期为某月的 31 号,则等于当月的 30 号。 |
函数示例:在会计计算中,财会系统一般按照一年 12 个月,每月 30 天计算,可使用 DAYS360 函数计算支付款项等。点击体验效果
DATEDIF
DATEDIF 函数可用于计算两个时间的差值。
函数用法:
DATEDIF(start_timestamp, end_timestamp, [unit])
其中各参数的含义如下:
- start_timestamp:必需, 开始时间;
- end_timestamp:必需,结束时间;
- Unit:可选,默认为 “d”,可设置的参数如下:
- “y”:年数
- “M”:月数
- “d”:天数
- “h”:小时数
- “m”:分钟数
- “s”:秒数
注:如结束日期小于开始日期,则计算不出结果。
函数示例:通过 DATEDIF 函数计算时间差的年数、月数、天数等,可应用于计算项目的消耗天数、活动的举办天数等。点击体验效果
注:详细的 DATEDIF 函数使用案例可参考文档:如何计算两个日期的时间差。
DATEDELTA
DATEDELTA 函数可以在指定日期的基础上增加/减少天数。
函数用法:
DATEDELTA(timestamp, deltadays)
其中各参数的含义如下:
- timestamp: 必需,初始日期;
- deltadays:必需,需要加减的天数,正数为增加,负数为减少。
函数示例:如生产场景中,录入生产日期和保质期后,可通过 DATEDELTA 函数计算产品的过期时间。点击体验效果
注:DATEDELTA 函数须在日期时间字段内使用。
HOUR
HOUR 函数可用于返回日期时间中的小时数。
函数用法:
HOUR(timestamp)
函数示例:如计算打卡时间中对应的小时数,可设置公式为HOUR(打卡时间),即 2023-01-01 14:38:01 对应的小时数为 14。点击体验效果
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(timestamp)
函数示例:ISOWEEKNUM 函数可用于计算政府和商务的会计年度,用以维持时序。点击体验效果
MINUTE
MINUTE 函数可用于返回日期时间中的分钟数。
函数用法:
MINUTE(timestamp)
函数示例:如计算打卡时间中对应的分钟数,可设置公式为MINUTE(打卡时间),即 2023-01-05 16:14:24 对应的分钟数为 14。点击体验效果
MONTH
MONTH 函数可用于返回日期中的月份, 值是介于 1 到 12 之间的整数。
函数用法:
MONTH(timestamp)
函数示例:如计算考勤日期对应的月份,可设置公式为MONTH(考勤时间),即 2023-01-02 对应的月份为 1。点击体验效果
NETWORKDAYS
NETWORKDAYS 函数可计算两个日期之间完整的工作日数值,其中,工作日不包括周末和专门指定的假期。
函数用法:
NETWORKDAYS(start_timestamp, end_timestamp, [holidays])
其中各参数的含义如下:
- start_timestamp:必需, 开始日期;
- end_timestamp:必需,结束日期;
- holidays:可选,可填写需要从工作日中排除的一个或多个日期,如各种省/市/自治区和国家/地区的法定假日及非法定假日。
注:holidays 参数可通过如下两种方式输入:
- 使用 DATE 函数或作为其他函数的结果输入;如,使用函数 DATE(2012,5,23) 输入 2012 年 5 月 23 日;
- 直接调用子表单中的日期时间字段,主表中的日期时间字段暂不支持直接调用。
函数示例:如,计算某员工 6 月外包工资时,需将 2023 年 6 月 22 日和 2023 年 6 月 23 日制定为假期,则设置公式为NETWORKDAYS(开始时间,结束时间,[DATE(2023,6,22),DATE(2023,6,23)]),即可根据开始、结束时间计算出对应的工作天数和工资。点击体验效果
NOW
NOW 函数可返回当前时间。
函数用法:
NOW()
函数示例:如签到场景中,可通过 NOW 函数生成当前时间,完成签到。点击体验效果
注:在日期时间字段中使用 NOW 函数时,时间类型可在字段属性中设置。
SYSTIME
SYSTIME 函数可返回当前服务器时间。即使客户端的时间被人为调整了,SYSTIME 函数不受影响,获取的仍然是服务器时间。
函数用法:
SYSTIME()
函数示例:如签到、打卡等场景中,可通过 SYSTIME 函数完成记录系统时间,有效避免作弊的情况。点击体验效果
注:在日期时间字段中使用 SYSTIME 函数时,时间类型可在字段属性中设置。
SECOND
SECOND 函数可用于返回日期时间中的秒数。
函数用法:
SECOND(timestamp)
函数示例:如计算签到时间中对应的秒数,可设置公式为SECOND(签到时间),即 2023-02-03 08:49:44 对应的秒数为 44。点击体验效果
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 函数的使用效果如下:
注:日期与文本格式的相互转换,可参考文档:文本与日期格式相互转换。
WEEKDAY
WEEKDAY 函数可用于计算日期的星期数,返回 0 到 6 之间的数值。
函数用法:
WEEKDAY(日期时间)
函数示例:如计算签到日期对应的星期数,可设置公式为WEEKDAY(签到日期),即 2023-05-26 对应的星期数为 5(星期五),2023-05-28 对应的星期数为 0(星期日)。点击体验效果
WEEKNUM
WEEKNUM 函数可用于计算某日期在一年中处于第几周。
函数用法:
WEEKNUM(timestamp, return_type)
其中各参数的含义如下:
- timestamp: 必需,指定日期;
- return_type: 可选参数,确定一周从哪一天开始,具体参数值对应的日期如下表:
return-type | 一周的第一天为 |
1/17/为空 | 星期日 |
2/11 | 星期一 |
12 | 星期二 |
13 | 星期三 |
14 | 星期四 |
15 | 星期五 |
16 | 星期六 |
注:当 return_type 的值不在上述表格范围内或未填写该参数时,默认为从星期日开始计算。
函数示例:当时间选定为 2023 年 1 月 2 日时,分别以星期日和星期一作为一周的第一天,得到的周次结果是不同的。点击体验效果
WORKDAY
WORKDAY 函数可计算在某日期(起始日期)之前或之后、与该日期相隔指定工作日的某一日期的日期值。 工作日不包括周末和专门指定的假日。
函数用法:
WORKDAY(start_timestamp, days, [holidays])
其中各参数的含义如下:
- start_timestamp: 必需,起始日期;
- days: 必需,起始日期之前或之后不含周末及节假日的天数。 Days 为正值将生成未来日期;为负值则生成过去日期;
- holidays: 可选,其中包含需要从工作日历中排除的一个或多个日期,例如各种省/市/自治区和国家/地区的法定假日及非法定假日。该列表可以是由日期所构成的数组常量。
注:holidays 参数可通过如下两种方式输入:
- 使用 DATE 函数或作为其他函数的结果输入;如,使用函数 DATE(2012,5,23) 输入 2012 年 5 月 23 日;
- 直接调用子表单中的日期时间字段,主表中的日期时间字段暂不支持直接调用。
函数示例:如,计算交货时间时,需将 2023 年 4 月 5 日制定为假期,则设置公式为WORKDAY(下单时间,处理工作日,[DATE(2023,4,5)]),扣除周末和假期,即可根据下单时间计算出对应的交货时间。点击体验效果
YEAR
YEAR 函数可用于返回日期时间中的年份。
函数用法:
YEAR(timestamp)
函数示例:如计算生产时间中对应的秒年份,可设置公式为YEAR(生产日期),即 2023-02-10 对应的年份为 2023。点击体验效果