DB2 預設日期格式由建庫時的 Territory Code (國家/地區代碼) 決定,建庫後無法直接修改。若需變更顯示格式 (如從 MM/DD/YYYY 改為 ISO 標準 YYYY-MM-DD),必須以指定 DATETIME 選項重新綁定 DB2 系統工具包。本文提供標準化操作步驟與驗證方法。
| Territory Code | 預設日期格式 | 範例 (2003-05-30) |
|---|---|---|
| US | MM/DD/YYYY | 05/30/2003 |
| JP | YYYY-MM-DD | 2003-05-30 |
| DE | DD.MM.YYYY | 30.05.2003 |
DD.MM.YYYYYYYY-MM-DD (推薦,排序友善)YYYY-MM-DDMM/DD/YYYY# Windows
cd "C:\Program Files\IBM\SQLLIB\BND"
# AIX/Linux (假設實例 db2inst1)
cd /home/db2inst1/sqllib/bnd
db2 connect to YOUR_DB_NAME
db2 bind @db2ubind.lst DATETIME ISO BLOCKING ALL GRANT PUBLIC
@db2ubind.lst:系統工具包清單檔DATETIME ISO:指定目標格式BLOCKING ALL:啟用封塊優化GRANT PUBLIC:授予 PUBLIC 執行權限db2 "VALUES CURRENT DATE"
1
----------
2003-05-30 <-- ISO 格式已生效
1 record(s) selected.
SimpleDateFormat、C# ToString("yyyy-MM-dd")),不受此設定影響。db2ubind.lst 包含核心工具包;若有自訂工具包需同步重綁。無需重綁、即時生效、跨平台一致:
-- ISO 格式輸出
SELECT VARCHAR_FORMAT(CURRENT TIMESTAMP, 'YYYY-MM-DD') FROM SYSIBM.SYSDUMMY1
-- 2024-01-15
-- 自訂格式
SELECT VARCHAR_FORMAT(CURRENT TIMESTAMP, 'YYYY年MM月DD日 HH24:MI:SS') FROM SYSIBM.SYSDUMMY1
-- 2024年01月15日 14:30:45
推薦:現代應用統一在應用層或 SQL 顯式格式化,避免依賴資料庫級全域設定,提升可移植性。