啟明Risen Venus

用 SQLite 記帳的第三年

三年前我把記帳從手機 App 搬到了一個 SQLite 文件裡。起因很簡單:那個 App 改成了訂閱制,導出的 CSV 還缺了備註字段。

現在的結構只有一張表:

CREATE TABLE txn (
  id        INTEGER PRIMARY KEY,
  day       TEXT    NOT NULL,   -- 2026-03-21
  amount    INTEGER NOT NULL,   -- 單位是分,支出為負
  account   TEXT    NOT NULL,   -- 現金 / 信用卡 / 交通卡 ...
  category  TEXT    NOT NULL,
  note      TEXT
);

金額用整數「分」來存,避開浮點誤差。這是第一年踩過坑之後才改的。

每月對一次帳

每個月初花二十分鐘,把信用卡帳單和表裡的記錄對一遍。查漏用的是一個很笨的查詢:

SELECT category, SUM(amount) / 100.0 AS total
FROM txn
WHERE day BETWEEN '2026-02-01' AND '2026-02-28'
GROUP BY category
ORDER BY total;

三年下來,最大的收穫不是省了多少錢,而是對「錢花到哪裡去了」有了確切的答案,不再靠感覺。

分類越分越細是個坑

第一年我設了四十多個分類,「咖啡」和「飲料」分開,「地鐵」和「公交」也分開。結果每次記帳都要猶豫一下,統計時又得手動合併。後來砍到十二個,夠用了。

如果你也想試試,我的建議是:先隨便記一個月,不要急著設計表結構,月底再根據實際數據決定要哪些列。