在做ClinicOS的時候遇到一個問題,在保存病歷登記時間時,我使用了“CURRENT_TIMESTAMP”,但這有個問題,它返回的是UTC Time,這對我們中國人沒啥用,一直希望能想辦法將它轉為localtime。今天剛好有空,所以去查了查Sqlite的Mail List,果然也有人遇到了這個問題,我從一篇名為《translate time comparison statement》(http://www.mail-archive.com/sqlite-users@sqlite.org/msg12350.html)中看到這樣的回復:
Mark Wyszomierski wrote:
You may want
WHERE julianday(date('now')) - julianday(date(arrival_date)) > 7
Mark,
You should still use the 'localtime' modifier on the 'now' value if your
timestamps are local time since 'now' always returns UTC times.
WHERE julianday(date('now', 'localtime')) - julianday(date(arrival_date)) > 7
嘿嘿,看來如果想得到一個符合本機區(qū)域設置的當前時間,必須用date函數來轉換,
但date只函數只返回當前日期,而我需要的是返回當前日期及時間,所以這里把它換成datetime函數,即:
datetime(CURRENT_TIMESTAMP,'localtime')
以下是sqlite下測試的輸出信息:
sqlite> select CURRENT_TIMESTAMP;
2006-06-18 09:23:36
sqlite> select datetime(CURRENT_TIMESTAMP,'localtime');
2006-06-18 17:23:44
sqlite>