日期函數

日期函數簡介

日期時間欄位的傳回值為時間戳(timestamp),單位是毫秒;本文中的日期函數的參數均可直接使用日期欄位。如,YEAR(日期時間欄位)。

下面介紹關於日期函數的兩個基本概念:

  • 時間戳(timestamp):時間戳是電腦記錄時間的一種格式。通常是一個字符序列,唯一地標識某一刻的時間。在Jodoo表單中,「日期時間」欄位便是由這樣的序列來儲存的。
  • 日期對象:可以理解為年月日時分秒;日期對象的格式為 Sat Aug 01 2015 00:00:00 GMT+0800,即北京時間 2015 年 8 月 1 日 00:00:00,日期對象可以進行各種運算,比如日期加減法等等。

DATE

DATE(timestamp)

DATE 函數可用於將時間戳轉換為日期物件。

透過以下公式可將年月日(時分秒)轉換為日期物件:

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 函數的使用效果如下:

2. 也可搭配 TEXT 函數將取得的日期轉換為文字格式,如設定公式為 TEXT(TODAY(),"yyyyMMddhhmmss"),即可取得日期的年月日時分秒。

附註

日期與文字格式的相互轉換,可參考文件:文字與日期格式相互轉換

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/01/02 時,分別以週日和週一作為一週的第一天,得到的週次結果是不同的。

WORKDAY

WORKDAY 函數可計算在某日期(起始日期)之前或之後、與該日期相隔指定工作日的某一日期的日期值。 工作日不包括週末和專門指定的假日。

函數用法:

WORKDAY(start_timestamp, days, [holidays])

其中各參數的含義如下:

  • start_timestamp: 必需,起始日期;
  • days: 必需,起始日期之前或之後不含週末及節假日的天數。 Days 為正值將生成未來日期;為負值則生成過去日期;
  • holidays: 可選,其中包含需要從工作日曆中排除的一個或多個日期,例如各種省/市/自治區和國家/地區的法定假日及非法定假日。該列表可以是由日期所構成的陣列常量。

附註

holidays 參數可透過如下兩種方式輸入:

1. 使用 DATE 函數或作為其他函數的結果輸入;如,使用函數 DATE(2012,5,23) 輸入 2012/05/23;

2. 直接調用子表單中的日期時間欄位,主表中的日期時間欄位暫不支援直接調用。

如,計算交貨時間時,需將 2023/04/05 製定為假期,則設定公式為WORKDAY(下單時間,處理工作日,[DATE(2023,4,5)])扣除週末和假期,即可根據下單時間計算出對應的交貨時間。

YEAR

YEAR 函數可用於返回日期時間中的年份。

函數用法:

YEAR(timestamp)

函數範例:如計算生產時間中對應的秒年份,可設定公式為YEAR(生產日期),即 2023-02-10 對應的年份為 2023。

這項資訊有幫助嗎?
需要更多協助嗎?聯繋技術支援。