![](/img/trans.png)
[英]how can I select the month part only in a DATE datatype column using CI active record?
[英]SQLite does not have a DATE datatype? How can I workaround this?
SQLite沒有日期的數據類型。
我想知道是否足以在日期字符串之間進行字符串比較,例如Ymd H:i:s
(標准的sql日期時間格式)。
例如...WHERE date < NOW()...
這會在某些情況下失敗嗎?
您可以使用以下數據類型在SQLite中存儲日期:
然后,您可以使用此處列出的功能轉換這些假日期。
現在,您還提到了函數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()
。
我個人喜歡使用unsigned INT和unix時間戳作為日期。 將日期作為整數進行比較非常簡單有效,PHP有許多功能可以使這些日期成為可讀的。
使用now()
將無法正常工作,因為SQLite不知道這意味着什么。 但是,SQLite知道current_timestamp
含義以及具有所需格式的內容 :
CURRENT_TIMESTAMP的格式為“YYYY-MM-DD HH:MM:SS”。
在MySQL中, current_timestamp
是now()
的同義詞,它也具有所需的格式 :
以
'YYYY-MM-DD HH:MM:SS'
的值返回當前日期和時間。
所以他們都使用ISO-8601時間戳格式,幾乎任何數據庫都可以很容易地在ISO-8601字符串和時間戳之間進行轉換,這是一個很好的便攜式選擇。
我很確定在某些情況下它會失敗。 更快的方法是存儲time()值(或mktime())並基於time()生成查詢。
這也適用於MySQL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.