SQLite沒有日期數據類型。SQLite沒有DATE數據類型?我該如何解決這個問題?
我想知道是否足以在日期字符串之間進行字符串比較,如Y-m-d H:i:s
(標準的sql datetime格式)。
例如...WHERE date < NOW()...
。這在某些情況下會失敗嗎?
SQLite沒有日期數據類型。SQLite沒有DATE數據類型?我該如何解決這個問題?
我想知道是否足以在日期字符串之間進行字符串比較,如Y-m-d H:i:s
(標準的sql datetime格式)。
例如...WHERE date < NOW()...
。這在某些情況下會失敗嗎?
你可以存儲在SQLite的日期與下列數據類型:
然後,您可以使用列出的功能here來轉換這些假日期。
現在,你也提到了函數NOW()
,這將無法在SQLite中工作。這是MySQL的。這將顯示你的SQLite使用語法:
sqlite> select date('now');
2012-02-12
sqlite> select date('now') = date('2012-02-12');
1
sqlite> select date('now') = date('2012-02-11');
0
所以,強烈建議您使用此功能,並在另一側,請確保您不使用NOW()
。
Unix時間的生根 – dierre 2012-02-12 14:17:42
我很確定它會在某些情況下失敗。 更快的方法是存儲time()值(或mktime())並根據time()生成查詢。
這也適用於MySQL。
就我個人而言,我喜歡使用無符號的INT和日期的unix時間戳。將日期作爲整數進行比較是非常簡單和高效的,而且PHP具有使這些日期成爲可讀的衆多功能。
引述羅傑
SQLite沒有專門datetime types,但確實有few datetime functions。遵循字符串表示格式(實際上 只有格式1-10)通過那些函數理解(存儲值爲 一個字符串)然後你可以使用它們,加上字典對比 就可以匹配日期時間比較字符串(只要你不要 嘗試將日期與時間或日期時間進行比較,而不是 無論如何都會產生很大的意義)。
根據您使用的語言,您甚至可以獲得automatic conversion。 (這並不適用於比較SQL語句像 的例子,但是會讓你的生活更輕鬆。)
使用now()
不會起作用,因爲SQLite不知道這是什麼意思。 SQLite的確實,但是,知道什麼current_timestamp
手段和that has the desired format:
爲CURRENT_TIMESTAMP格式爲 「YYYY-MM-DD HH:MM:SS」。
在MySQL中,current_timestamp
是now()
and that also has the desired format的代名詞:
返回當前日期和時間爲
'YYYY-MM-DD HH:MM:SS'
值。
所以它們都使用ISO-8601時間戳格式,幾乎所有的數據庫將能夠ISO-8601字符串和時間戳之間的轉換很容易,這樣是一個很好的和便攜式的選擇。
http://www.sqlite.org/lang_datefunc.html – dierre 2012-02-12 00:44:50
但我不能使用這些如果我想我的查詢與mysql兼容 – Alex 2012-02-12 00:46:37
對不起。我沒有得到什麼問題。我只會使用Unix時間戳。 – dierre 2012-02-12 11:46:09