SQLite數據庫在存儲時間時提供了多種格式可供存儲,不同存儲方式對查詢有啥影響沒?不同時間精度的存儲又會對查詢結果有啥影響,最近做項目碰到這個問題我做如下一個總結:
在數據庫表中,要表示一個時間信息,我們可以根據需要使用DATE,TIME,DATETIME或者VCHAR格式存儲,不同的存儲方式也會帶來查詢的不同結果,現在我們建一個表timetest
並在其中插入四行數據
然後我們分別執行以下三組查詢操作
第一組:
第二組:
第三組:
從以上三組操作中我們可以發現,當時間存儲的內容相同時(即時間格式和值相同),無論時間的類型是DATE TIME DATETIME還是VCHAR,只要查詢語句相同,得到的結果也相同。
現在我們看另外一組查詢
從這一組查詢結果我們可以看出SQLite數據庫對時間的排序其實就是把時間格式的數據當做一串字符串,通過比較字符串的大小的結果來判斷時間的大小,因此在查詢時間時要注意數據庫時間存儲的格式及自己所要查詢的範圍,若數據庫時間存儲值精確到了分(2013-06-02 16:12),而查詢語句對起始時間精確到了秒(2013-06-02 16:12:00),會造成2013-06-02 16:12無法獲取到,造成誤差。