跳到主要內容跳到頁尾

冷門日期函式:DAYS、DAYS360、YEARFRAC 與 EPOCHTODATE

6 分鐘閱讀Lv.3 中級摘要與日期

整理四個不太常見的日期函式:DAYS 算天數、DAYS360 用一年 360 天的算法算天數、YEARFRAC 算含小數的年數(5 種天數基準對照表)、EPOCHTODATE 把 Unix 時間戳記轉成日期時間。

發布 更新

文章目錄

日期相減用 - 就能得到天數,那為什麼還有 DAYS、DAYS360、YEARFRAC?因為在算利息、年資、API 回傳的時間戳記這幾種狀況,單純相減不太夠用。今天把這四個比較冷門的日期函式放在一起:DAYS、DAYS360、YEARFRAC 和 EPOCHTODATE。

坦白說,我在工作上用到的只有 EPOCHTODATE(資料裡有時間戳記的時候),DAYS360 跟 YEARFRAC 屬於遇到財務、貸款類的資料才會碰到,這篇當工具書放著,需要的時候回來查。

日期序號、DATE、日期相減的基礎在 日期與時間入門,年資用的 DATEDIF 在 年資、工作日、到期日,這邊不重講。

怎麼選

要的東西用哪個重點
兩個日期差幾天DAYS參數順序是「結束日、開始日」
一年 360 天、每月 30 天的天數DAYS360財務計息用,跟實際天數會差幾天
兩個日期差幾年(含小數)YEARFRAC要選天數基準,預設是 30/360
Unix 時間戳記轉日期時間EPOCHTODATE結果是世界標準時間(UTC)

天數

DAYS

DAYS 回傳兩個日期之間的天數。

語法:

  • 結束日:比較晚的那個日期。
  • 開始日:比較早的那個日期。

要注意,順序是結束日在前、開始日在後,跟 DATEDIF(開始日在前)相反,很容易記反。

Google 試算表公式
fx

2026/10/11 到 2026/12/31 的天數

=DAYS(DATE(2026, 12, 31), DATE(2026, 10, 11))

先手算:10 月剩 20 天,加 11 月 30 天、12 月 31 天,20 + 30 + 31 = 81,你應該會得到 81!這個結果跟直接寫 DATE(2026,12,31) - DATE(2026,10,11) 是一樣的。

兩個參數放反的話,結果會變成負數:

Google 試算表公式
fx

參數順序放反,得到負數

=DAYS(DATE(2026, 10, 11), DATE(2026, 12, 31))

結果是 -81。我個人還是比較習慣直接用減法,不過 DAYS 的好處是公式一看就知道在算天數,不用猜減號兩邊是日期還是數字。

DAYS360

DAYS360 用「一年 360 天、每個月 30 天」的算法,回傳兩個日期之間的天數。

語法:

  • 開始日:起始日期。
  • 結束日:結束日期。
  • 方法:選填。FALSE(預設)是美國算法,TRUE 是歐洲算法,差別在月末調整規則,也包含二月最後一天,不只 31 號。

這個函式的開始日在前,跟 DAYS 相反。

先看一個平常的例子,從 2026/01/15 到 2026/10/11。每個月都算 30 天,1/15 到 10/15 是 9 個月,9 x 30 = 270 天,再扣掉 15 號到 11 號的 4 天,得到 266:

Google 試算表公式
fx

一年 360 天算法下的天數

=DAYS360(DATE(2026, 1, 15), DATE(2026, 10, 11))

結果是 266。實際天數用 DAYS 算是 269,差了 3 天,這就是 360 天算法的特色。

先看結束日是 31 號的差別。從 2026/01/15 到 2026/03/31:

Google 試算表公式
fx

美國算法(預設)

=DAYS360(DATE(2026, 1, 15), DATE(2026, 3, 31))

結果是 76,因為開始日小於 30 號,31 號就照 31 算。

Google 試算表公式
fx

歐洲算法

=DAYS360(DATE(2026, 1, 15), DATE(2026, 3, 31), TRUE)

結果是 75,歐洲算法會把 31 號一律當成 30 號。

開始日是二月最後一天也會不同。官方規則說美國法會調整月末開始日;歐洲法則把 31 日調成 30 日。對照如下:

開始 → 結束美國法 FALSE歐洲法 TRUE
2026/02/28 → 2026/03/313032
2024/02/29 → 2024/03/313031

平年與閏年的二月都能讓結果出現差異。實務上依合約或對方要求選方法,沒有說明時先確認規則,不要把預設值當成適用所有計息制度的標準。

年數

YEARFRAC

YEARFRAC 回傳兩個日期之間的年數,含小數部分。

語法:

  • 開始日:起始日期。
  • 結束日:結束日期。
  • 天數基準:選填,用哪種方式數天數和一年的長度,0 到 4,預設是 0。

五種基準的差異,用 2026/01/15 到 2026/10/11(2026 年不是閏年)和 2024/01/15 到 2024/10/11(2024 年是閏年)來看:

基準算法2026 年2024 年
0(預設)美國 30/3600.73890.7389
1實際天數 / 實際年長0.73700.7377
2實際天數 / 3600.74720.7500
3實際天數 / 3650.73700.7397
4歐洲 30/3600.73890.7389

手算 2026 年那一欄:實際天數是 269,30/360 的天數是 266。基準 0 是 266 / 360 = 0.7389,基準 1 是 269 / 365 = 0.7370,基準 2 是 269 / 360 = 0.7472。2024 年是閏年,實際天數多一天變成 270,基準 1 除以 366 得到 0.7377,基準 3 還是除以 365,得到 0.7397。

Google 試算表公式
fx

預設基準 0 的年數

=YEARFRAC(DATE(2026, 1, 15), DATE(2026, 10, 11))

結果是 0.738888889,上面的表格和後面的數字我都取到 4 位。換成實際天數基準:

Google 試算表公式
fx

基準 1,實際天數 / 實際年長

=YEARFRAC(DATE(2026, 1, 15), DATE(2026, 10, 11), 1)

結果是 0.736986301,也就是 0.7370。

拿來算年資也行,例如到職日 2019/03/18 到 2026/10/11,預設基準是 7.5639 年,如果改用基準 3(實際天數 / 365)是 7.5726 年。算出來的小數年跟 DATEDIF 的整年、整月不同,兩者要放在報表上的話,先說明用哪種算法。

基準 1 橫跨多年時的算法本文不涵蓋,這篇的例子都限定在同一年內。

時間戳記

EPOCHTODATE

EPOCHTODATE 把 Unix 紀元時間戳記(從 1970/01/01 00:00:00 UTC 起算的秒數)轉成日期時間。

語法:

  • 時間戳記:數字,從 1970/01/01 00:00:00 UTC 起算的數量。
  • 單位:選填。1 是秒(預設),2 是毫秒,3 是微秒。

來源是 API、日誌或資料庫匯出的資料,常常是 1700000000 這種十位數字。十位數是秒,十三位數通常是毫秒,十六位數是微秒。

Google 試算表公式
fx

1700000000 秒轉成日期時間

=TEXT(EPOCHTODATE(1700000000), "yyyy/mm/dd hh:mm:ss")

先手算:1700000000 秒除以 86400 約 19675.926 天,1970/01/01 加上 19675 天是 2023/11/14,剩下 0.926 天是 22:13:20。所以結果是 2023/11/14 22:13:20。這裡的 TEXT 只是為了把格式固定下來,單用 儲存格也會顯示日期時間。

同一個時刻,毫秒版本是 13 位數,要指定單位 2:

Google 試算表公式
fx

毫秒時間戳記,單位填 2

=TEXT(EPOCHTODATE(1700000000000, 2), "yyyy/mm/dd hh:mm:ss")

結果一樣是 2023/11/14 22:13:20。單位選錯會差 1000 倍,如果轉出來的日期離譜,先數一下時間戳記幾位數。

EPOCHTODATE 的結果是世界標準時間,不是台灣時間。台灣是 UTC+8,加 8 小時就好:

Google 試算表公式
fx

轉成台灣時間(UTC+8)

=TEXT(EPOCHTODATE(1700000000) + TIME(8, 0, 0), "yyyy/mm/dd hh:mm:ss")

結果是 2023/11/15 06:13:20,日期也跨到隔天了。

反過來,日期轉成時間戳記沒有專用函式,用日期序號算就好。1970/01/01 的序號是 25569,所以:

Google 試算表公式
fx

2026/10/11 00:00:00 UTC 的秒數時間戳記

=(DATE(2026, 10, 11) - DATE(1970, 1, 1)) * 86400

先手算:46306 - 25569 = 20737 天,乘 86400,得到 1791676800。

匯入 API 資料時,記得先確認是秒還是毫秒,再套 EPOCHTODATE 吧!

我是喜特先生,Mr. Sheet,我們下個教學見!

分享:
#日期#天數#時間戳記#YEARFRAC
喜特先生 Mr. Sheet

喜特先生 Mr. Sheet

數據分析師/商業分析師

八年工作經驗,跨不同業界解決數據需求。做過的案例都整理在作品集。

接下來可以

相關文章

查看所有文章

留言討論

共 0 則留言

訂閱電子報,新文章上線就通知你

免費,隨時可取消。

送出即表示同意服務條款與隱私權政策。