我存儲日期爲String
在我的數據庫,格式如下:比較日期(存儲爲字符串)在android sqlite數據庫?
YYYY-MM-DD HH:MM:SS
這是支持的格式(http://www.sqlite.org/lang_datefunc.html)之一。現在我想比較這些存儲日期(以及字符串)與其他日期。我的日期都存儲在column_date
列,所以我想這樣的:
SELECT * FROM MyTable
WHERE
(Date(column_date) >= Date (2000-01-01) AND Datetime(column_date) <= Datetime (2050-01-01))
只要我閱讀文檔,The date and time functions use a subset of IS0-8601 date and time formats. The date() function returns the date in this format: YYYY-MM-DD.
所以我想,我這樣做是正確 - 我創建存儲字符串日期,並與日期比較從另一個字符串創建。
但它不起作用,即使column_date
是今年的日期,並且您可以看到開始日期和結束日期非常好。也嘗試此(用於日期時間的日期代替):
SELECT * FROM MyTable
WHERE
(datetime(column_date) >= Date (2000-01-01) AND datetime(column_date) <= Datetime (2050-01-01))
和此之間(而不是使用< =和> =)
SELECT * FROM MyTable
WHERE
(Date(column_date) between Date (2000-01-01) AND Datetime (2050-01-01))
和所有其它可能的組合。我做錯了什麼,我是愚蠢的,還是文件存在,或者我錯過了一件非常重要的事情?試圖找到解決方案几個小時,但沒有什麼作品...
我不相信這是正確的......從SQLite的文檔「的日期()函數返回以下格式的日期:YYYY-MM-DD」。我讀到它的方式意味着即使數據以DateTime格式存儲,使用Date()將只返回它的日期部分。這是不正確的? – Barak
這個工作,但仍不能理解這一點。在文檔中明確指出,該日期或日期時間返回DATE。而我的專欄是字符串。那麼怎麼可能,你可以比較String(= mydate)與日期(使用datetime函數從字符串2000-01-01 00:00:00創建的日期)?它不合邏輯。爲什麼你沒有把Datetime也應用到我的專欄,如果它的字符串? – qkx
所以實際上,對我來說這在邏輯上是正確的:Datetime(mydate string)<= Datetime(另一個日期字符串)。但是,這不工作,你的代碼做的工作;)滑稽 – qkx