跳至內容
Astera Technology

批次到了不可使用的首日,為甚麼仍列可出貨?

日期欄是「第一個不能使用的日子」時,當日也要排除,不能誤作仍有效。

下載完整個案資料及參考答案 ↓

先準備用來排查的資料

欄位明確叫 unusable_from,由該日起不能放行。用大於或等於卻會把當天包括。先確認日期代表最後有效日,還是首個無效日,再選比較符號;只寫「到期」可能不夠清楚。

以下完整建表及資料只在新的 SQLite 測試資料庫執行。全部紀錄均為假設,數量以件計,輸入的 cents 金額欄以貨幣的分存整數;計算後的平均數可能不足整分。小型例子的各表均完整列在預覽。

假設輸入:batches
編號數量首個不可用日
A32026-10-10
B52026-10-11
下載可編輯 CSV ↓
可直接執行的完整測試資料
CREATE TABLE batches(id TEXT PRIMARY KEY,qty INTEGER,unusable_from TEXT);
INSERT INTO batches VALUES ('A',3,'2026-10-10'),('B',5,'2026-10-11');

重現錯誤結果,再核對更正

錯誤示範查詢:只用來重現問題
SELECT id,qty FROM batches WHERE unusable_from>='2026-10-10' AND qty>0 ORDER BY id;
實際執行的錯誤示範結果
編號數量
A3
B5
下載可編輯 CSV ↓
更正後的 SQLite 查詢
SELECT id,qty FROM batches WHERE unusable_from>'2026-10-10' AND qty>0 ORDER BY id;
更正查詢的實際結果
編號數量
B5
下載可編輯 CSV ↓

10 月 10 日截數時,A 已不能使用;B 日期仍合適且有五件。錯誤查詢包括 A 的三件,更正後只列 B。這未認證貨品質素或批准出貨。

套用前先測邊界及資料範圍

加入將來才失效但零數量的批次,不會只因日期合適而出現,仍須有可用件數。

邊界測試要另開新的假設資料庫,重做完整建表及資料,只套用以下改動,再執行更正查詢。測試改動不可用於正式系統。

新假設副本內的邊界改動
INSERT INTO batches VALUES ('C',0,'2026-10-12');
改動後再執行更正查詢的實際結果
編號數量
B5
下載可編輯 CSV ↓

這是自訂純日期政策,不是法律保質期解釋;扣起、回收、儲存條件及指定時刻失效須另查。

以上錯誤、更正及邊界結果都已在 SQLite 執行,並與另行編寫的預期資料逐行核對。證據只適用於這組假設條件,未測其他資料庫、正式效能或你的現有資料結構。

相關資源