數據與工具

試算表的日期欄位為什麼老是出錯:八個常見誤判與時區寫法

三月四日還是四月三日。這個問題聽起來很小,但我們看過一份跨國時程表因此差了一個月。日期欄位的錯,多半不是打錯字,是對日期這種資料有幾個根深蒂固的誤判。以下一個一個盤點。

試算表的日期戳記要怎麼寫,才能避免常見的錯誤?

日期一律用四位數年、兩位數月、兩位數日的順序記錄,並確認儲存格是真正的日期值而不是文字。跨時區的時間要選定一個基準時區,寫在表頭。一個欄位只裝一種意義的日期,事件發生日、登錄日與修改日分開存。做到這三點,日期欄位的錯誤就能擋掉大半。

日期戳記,是附在一筆資料上、說明某件事在何時發生的時間標記。以下八個誤判,是我們在客戶的試算表裡反覆看到的。每一個都附上辨認方法與修正做法。

誤判一:以為大家看到的日月順序都一樣

同一串數字,有的地區先寫月再寫日,有的地區先寫日再寫月。跨國合作時,一方輸入的日期,另一方可能讀成另一天。日期數字在十二以內時,兩種讀法都合法,錯了也不會跳出警告。

修正做法是改用由大到小的寫法,年在前,月居中,日在後。這種順序沒有第二種讀法。規則寫進表頭,並在第一列放一個範例。

誤判二:以為看起來像日期的就是日期

從其他系統複製貼上的日期,常常是文字。它長得一模一樣,但不能排序、不能相減、不能依月份分組。

辨認方法有兩個。看儲存格的預設對齊,文字通常靠左,數值與日期通常靠右。或用檢查是否為數值的函式測試。修正時,另開一欄用轉換函式把文字轉成日期值,核對無誤後,再取代原欄。不要直接在原欄上改。

誤判三:以為年份寫兩位數可以省事

兩位數年份,軟體會自己猜是哪個世紀。猜的規則在不同工具之間不一致。記錄出生年、建物完工年、合約到期年的時候,這個猜測可能差一百年。

另外,台灣常用的民國紀年,軟體多半不認得,會被當成文字或被讀成西元的很早期年份。對內文件要用民國年可以,但資料欄位請存西元,顯示需求另外處理。

誤判四:以為時間不需要標時區

一位同事在台北下午三點更新了報價,另一位在歐洲的同事看到下午三點,以為是幾分鐘前的事。實際上差了好幾個小時。

時區,是地球上採用同一標準時間的區域。只要團隊或客戶跨了時區,時間欄位就要有時區資訊。最省事的做法是全表統一用一個基準時區,例如總部所在地的時間,或世界協調時間,並在表頭寫明。需要當地時間時,另加一欄時區代碼。

有日光節約時間的地區,一年裡與台灣的時差會改變。排定跨國會議或截止時間時,要另外確認當天的實際時差。

誤判五:以為一個日期欄就夠了

表上只有一欄日期。有人填的是事情發生的日子,有人填的是自己登錄的日子。兩者可能差好幾天。

至少要分三種。事件日期,是事情在現實中發生的那一天。登錄日期,是這筆資料被寫進表的那一天。修改日期,是這筆資料最後一次被改動的那一天。三欄各自獨立。分析成交週期用事件日期。稽核資料品質用登錄日期與事件日期的差距,差距越大,代表補登越多。

誤判六:以為自動帶入今天日期的函式可以當戳記

有些人在登錄日期欄放一個回傳今天日期的函式。當天看是對的。隔天打開,整欄都變成隔天的日期。

這類函式每次開檔都會重算,不能當作戳記。登錄日期要存成固定值。可以用鍵盤快速鍵輸入當天日期,或是輸入後把公式貼成數值。這個錯誤在交接時最常被發現,那時整欄歷史已經沒了。

誤判七:以為日期範圍可以寫在同一格

把三月一日到三月十五日寫在同一個儲存格,對人來說很清楚,對試算表來說是一串文字。之後想找出某一天有哪些項目在進行中,做不到。

期間一律拆成開始日期與結束日期兩欄。只有單日的事件,兩欄填同一天。尚未結束的,結束日期留空,並在資料字典寫明空白代表進行中。

誤判八:以為檔名上的日期等於資料的日期

檔名寫著某一天,裡面的資料卻是抓到前一週為止。檔名的日期通常是存檔的日子,不是資料涵蓋的日子。

在表的第一頁固定寫三行:資料涵蓋期間、資料擷取時間與時區、製表人。這三行比檔名可靠。引用公開統計資料時尤其重要,因為公開資料會回溯修正,同一個期間在不同日期擷取,數字可能不同。

日期欄位的統一寫法整理

  • 日期:四位數年、兩位數月、兩位數日,以連字號分隔
  • 日期加時間:日期之後空一格,接二十四小時制的時與分
  • 時區:全表一個基準時區,寫在表頭。需要時另加時區代碼欄
  • 期間:開始與結束分兩欄
  • 年月:需要只記到月時,仍存成該月第一天的日期值,用顯示格式隱藏日
  • 不確定的日期:日期欄留空,另在備註欄寫明約略時間,不要填一個猜的日子

每季做一次的日期欄位檢查

  1. 對每個日期欄做排序,看最早與最晚的幾筆是否合理
  2. 用檢查是否為數值的函式掃一遍,找出文字型日期
  3. 檢查結束日期早於開始日期的列
  4. 檢查登錄日期早於事件日期的列,並確認是否為預排事項
  5. 檢查落在未來的事件日期,確認不是年份打錯

這五項檢查用篩選與條件式格式就能做,大約十五分鐘。第一項最有效。年份打錯的資料,一排序就浮到最上面或最下面。

一個去識別化的例子:差了一個月的跨國時程表

一個同時與台灣和海外團隊合作的專案,共用一張時程表。海外同事習慣先寫日再寫月,台灣同事習慣先寫月再寫日。表上沒有規定格式,試算表的地區設定跟著各自的帳號走。

其中一項交付的截止日,被輸入成一串數字,在一方的畫面上是某月的三日,在另一方的理解裡是三月的某日。兩邊各自照自己的理解排工作。直到其中一方開始催件,才發現兩邊認知的日期差了將近一個月。

事後的修正有三項。把檔案的地區設定固定為同一個,不再跟著個人帳號。所有日期欄改成年月日由大到小的顯示格式。重要的截止日,旁邊加一欄用文字寫出星期幾。星期幾是一個很便宜的檢查碼,日期被讀錯時,星期通常對不上,馬上會有人發現。

從其他系統匯入日期時的檢查順序

日期欄的錯誤,多數是在匯入那一刻進來的。從表單工具、客戶提供的檔案或其他軟體匯出的資料,各有各的日期寫法。匯入後照下面的順序檢查,可以在問題擴散之前攔下來。

  1. 先不要動原欄。在右邊新增一欄,放轉換後的日期
  2. 確認來源的日月順序。找一筆日期數字大於十二的資料當作判斷依據,這種資料只有一種讀法
  3. 檢查轉換後的欄位是否全部為日期值,找出轉換失敗的列
  4. 排序轉換後的欄位,看頭尾幾筆是否落在合理範圍
  5. 抽五筆與來源畫面逐一對照,確認無誤後才隱藏原欄

第二步是關鍵。如果來源資料裡剛好所有日期的日與月都在十二以內,光看資料無法判斷順序,必須回頭問提供資料的人,或查來源系統的設定。不要猜。

日期規則要寫在哪裡才會被遵守

寫在獨立的規範文件裡,沒有人會看。有效的位置有三個。欄位標題的註解,寫一行格式與一個範例。資料驗證,直接擋掉不是日期的輸入,並在錯誤訊息裡寫出正確格式。表頭固定一列,寫明時區與資料涵蓋期間。

規則嵌在填寫的動線上,填的人不需要記住它,照著錯誤訊息改就會填對。這比任何教育訓練有效。

這些日期規則在哪些情況下不適用

合約、發票、法律文件上的日期寫法,要依文件適用地的慣例與規定,不能為了資料整齊就自行改寫。這類文件的日期效力與格式要求,應交由當地持牌專業人士確認。資料表裡可以另存一欄標準化的日期,原文件照原樣保留。

需要精確到秒、而且要比對多個系統紀錄的情境,例如追查網站異常,試算表的手動戳記不夠用,應該直接使用系統產生的日誌時間。

只有單一地區、單一使用者、不會交接的個人紀錄,也不必做到時區與三種日期分欄。規則的成本要與出錯的代價相稱。

← 回到新知列表