2012-09-19

SQLite 時間處理問題

在Delphi中透過ADO元件使用SQLite資料庫時,
抓取時間的資料格式如下
select datetime(CURRENT_TIMESTAMP,'localtime')
-------------------
2012-09-19 23:29:45
若將抓取的時間資料透過ADOQuery寫入,
會出現 is not a valid date and time 的錯誤訊息,
這是因為在台灣的時間格式 年、月、日 以"/"區隔而非"-",
故會產生時間格式錯誤的訊息,
使用下列語法指定輸出的時間格式,即可避免此問題
select strftime('%Y/%m/%d %H:%M:%f',datetime(CURRENT_TIMESTAMP,'localtime'))
-------------------
2012/09/19 23:29:45

時間格式:
%d - 月份內的日期
%f - 秒數 (準確至千份一秒)
%H - 小時
%j - 年份內的第幾日 (沒有潤年最大 365, 潤年最大 366)
%m - 月份
%M - 分鐘
%s - Unix Time Stamp
%w - 星期 (0 是星期日,6 是星期六)
%W - 年份內的第幾個星期
%Y - 年份
%% - 顯示 % 時使用

參考自
Programming Design Notes-SQLite 日期和時間的操作