日期时间字段 的返回值为时间戳(timestamp),单位是毫秒;本文中的日期函数的参数均可直接使用日期字段。如,YEAR(日期时间字段)。
下面介绍关于日期函数的两个基本概念:
时间戳(timestamp):时间戳是计算机记录时间的一种格式。通常是一个字符序列,唯一地标识某一刻的时间。在简道云表单中,「日期时间」字段便是由这样的序列来存储的。
日期对象:可以理解为年月日时分秒;日期对象的格式为 Sat Aug 01 2015 00:00:00 GMT+0800,即北京时间 2015 年 8 月 1 日 00:00:00,日期对象可以进行各种运算,比如日期加减法等等。
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”。点击体验效果
DAY 函数可用于返回日期中的天数, 值是介于 1 到 31 之间的整数。
函数用法:
DAY(timestamp)
函数示例:如计算签到日期中对应的天数,可设置公式为DAY(签到日期),即 2023-01-20 对应的天数为 20。点击体验效果
DAYS 函数可计算两个日期之间的天数。
函数用法:
DAYS(end_timestamp, start_timestamp)
其中各参数的含义如下:
函数示例:如考勤请假场景中,手动输入请假开始、结束日期,设置公式为DAYS(结束日期,开始日期),即可计算出请假天数。点击体验效果
DAYS360 函数可按照一年 360 天的算法(每个月 30 天,一年 12 个月),返回两个日期间相差的天数。
函数用法:
DAYS360(end_timestamp, start_timestamp, method)
其中各参数的含义如下:
方法 | 定义 |
false 或不填 | 美国 (NASD) 方法。 如果起始日期是一个月的最后一天,则等于同月的 30 号。 如果终止日期是一个月的最后一天,并且起始日期早于 30 号,则终止日期等于下一个月的 1 号,否则,终止日期等于本月的 30 号。 |
true | 欧洲方法。 如果起始日期和终止日期为某月的 31 号,则等于当月的 30 号。 |
函数示例:在会计计算中,财会系统一般按照一年 12 个月,每月 30 天计算,可使用 DAYS360 函数计算支付款项等。点击体验效果
DATEDIF 函数可用于计算两个时间的差值。
函数用法:
DATEDIF(start_timestamp, end_timestamp, [unit])
其中各参数的含义如下:
注:如结束日期小于开始日期,则计算不出结果。
函数示例:通过 DATEDIF 函数计算时间差的年数、月数、天数等,可应用于计算项目的消耗天数、活动的举办天数等。点击体验效果
注:详细的 DATEDIF 函数使用案例可参考文档:如何计算两个日期的时间差。
DATEDELTA 函数可以在指定日期的基础上增加/减少天数。
函数用法:
DATEDELTA(timestamp, deltadays)
其中各参数的含义如下:
函数示例:如生产场景中,录入生产日期和保质期后,可通过 DATEDELTA 函数计算产品的过期时间。点击体验效果
注:DATEDELTA 函数须在日期时间字段内使用。
HOUR 函数可用于返回日期时间中的小时数。
函数用法:
HOUR(timestamp)
函数示例:如计算打卡时间中对应的小时数,可设置公式为HOUR(打卡时间),即 2023-01-01 14:38:01 对应的小时数为 14。点击体验效果
ISOWEEKNUM 函数可用于计算日期在全年中的 ISO 周数。
其中,ISO 周数根据 ISO 8601 的规则计算得出,具体计算方法如下:
函数用法:
ISOWEEKNUM(timestamp)
函数示例:ISOWEEKNUM 函数可用于计算政府和商务的会计年度,用以维持时序。点击体验效果
MINUTE 函数可用于返回日期时间中的分钟数。
函数用法:
MINUTE(timestamp)
函数示例:如计算打卡时间中对应的分钟数,可设置公式为MINUTE(打卡时间),即 2023-01-05 16:14:24 对应的小时数为 14。点击体验效果
MONTH 函数可用于返回日期中的月份, 值是介于 1 到 12 之间的整数。
函数用法:
MONTH(timestamp)
函数示例:如计算考勤日期对应的月份,可设置公式为MONTH(考勤时间),即 2023-01-02 对应的月份为 1。点击体验效果
NETWORKDAYS 函数可计算两个日期之间完整的工作日数值,其中,工作日不包括周末和专门指定的假期。
函数用法:
NETWORKDAYS(start_timestamp, end_timestamp, [holidays])
其中各参数的含义如下:
注:holidays 参数可通过如下两种方式输入:
函数示例:如,计算某员工 6 月外包工资时,需将 2023 年 6 月 22 日和 2023 年 6 月 23 日制定为假期,则设置公式为NETWORKDAYS(开始时间,结束时间,[DATE(2023,6,22),DATE(2023,6,23)]),即可根据开始、结束时间计算出对应的工作天数和工资。点击体验效果
NOW 函数可返回当前时间。
函数用法:
NOW()
函数示例:如签到场景中,可通过 NOW 函数生成当前时间,完成签到。点击体验效果
注:在日期时间字段中使用 NOW 函数时,时间类型可在字段属性中设置。
SYSTIME 函数可返回当前服务器时间。即使客户端的时间被人为调整了,SYSTIME 函数不受影响,获取的仍然是服务器时间。
函数用法:
SYSTIME()
函数示例:如签到、打卡等场景中,可通过 SYSTIME 函数完成记录系统时间,有效避免作弊的情况。点击体验效果
注:在日期时间字段中使用 SYSTIME 函数时,时间类型可在字段属性中设置。
SECOND 函数可用于返回日期时间中的秒数。
函数用法:
SECOND(timestamp)
函数示例:如计算签到时间中对应的秒数,可设置公式为SECOND(签到时间),即 2023-02-03 08:49:44 对应的秒数为 44。点击体验效果
TIMESTAMP 函数可将日期对象转换成时间戳。
函数用法:
TIMESTAMP(date)
函数示例:在日期时间字段自定义时间时,可通过 TIMESTAMP 函数将日期对象转换为时间戳格式,以便于字段生成具体时间。点击体验效果
TIME 函数可返回特定时间的十进制数字。时间值为日期值的一部分,并用十进制数表示(例如 12:00 PM 可表示为 0.5,因为此时是一天的一半)。
函数用法:
TIME(hour, minute, second)
其中各参数的含义如下:
函数示例:如,生产场景中,可通过 TIME 函数计算产品的待机时长。点击体验效果
TODAY 函数可用于获取当前系统的日期,可精确到秒。
函数用法:
TODAY()
函数示例:
1)TODAY 函数可直接在日期时间字段中使用,显示的日期精度由日期时间字段的「字段属性 >> 类型」决定:
如,当设置日期时间字段类型为「年-月-日-时-分-秒」时,TODAY 函数的使用效果如下:
注:日期与文本格式的相互转换,可参考文档:文本与日期格式相互转换。
WEEKDAY 函数可用于计算日期的星期数,返回 0 到 6 之间的数值。
函数用法:
WEEKDAY(日期时间)
函数示例:如计算签到日期对应的星期数,可设置公式为WEEKDAY(签到日期),即 2023-05-26 对应的星期数为 5(星期五),2023-05-28 对应的星期数为 0(星期日)。点击体验效果
WEEKNUM 函数可用于计算某日期在一年中处于第几周。
函数用法:
WEEKNUM(timestamp, return_type)
其中各参数的含义如下:
return-type | 一周的第一天为 |
1/17/为空 | 星期日 |
2/11 | 星期一 |
12 | 星期二 |
13 | 星期三 |
14 | 星期四 |
15 | 星期五 |
16 | 星期六 |
注:当 return_type 的值不在上述表格范围内或未填写该参数时,默认为从星期日开始计算。
函数示例:当时间选定为 2023 年 1 月 2 日时,分别以星期日和星期一作为一周的第一天,得到的周次结果是不同的。点击体验效果
WORKDAY 函数可计算在某日期(起始日期)之前或之后、与该日期相隔指定工作日的某一日期的日期值。 工作日不包括周末和专门指定的假日。
函数用法:
WORKDAY(start_timestamp, days, [holidays])
其中各参数的含义如下:
注:holidays 参数可通过如下两种方式输入:
函数示例:如,计算交货时间时,需将 2023 年 4 月 5 日制定为假期,则设置公式为WORKDAY(下单时间,处理工作日,[DATE(2023,4,5)]),扣除周末和假期,即可根据下单时间计算出对应的交货时间。点击体验效果
YEAR 函数可用于返回日期时间中的年份。
函数用法:
YEAR(timestamp)
函数示例:如计算生产时间中对应的秒年份,可设置公式为YEAR(生产日期),即 2023-02-10 对应的年份为 2023。点击体验效果