我試圖從早期的訂單日期晚與此查詢:SQLite的訂購日期
SELECT * FROM event where event_date >= strftime('%d/%m/%Y','now') ORDER BY event_date ASC;
似乎但是不能完全工作(見圖片)。第三行返回2016年3月12日的日期,晚於2016年5月31日的第4行。
我試圖從早期的訂單日期晚與此查詢:SQLite的訂購日期
SELECT * FROM event where event_date >= strftime('%d/%m/%Y','now') ORDER BY event_date ASC;
似乎但是不能完全工作(見圖片)。第三行返回2016年3月12日的日期,晚於2016年5月31日的第4行。
你event_date
領域可能是一個VARCHAR
類型,所以它的訂單由2
和3
,然後通過6
,7
等
速戰速決將更改日期的符號來YYYYMMDD(年,月,日),因爲是即使是字符串也可以排序。
SQLite中沒有DATE數據類型。你只是使用YMD格式(如你所建議的),或整數(UNIX時間),或自4714 BC以來的浮點數。 (出於某種原因) - 全部按原樣排序。 – Blorgbeard
不知道,謝謝。不得不查看公元前4714年的奇怪事件:「朱利安時代是從公元前4713年開始的7980年的時間間隔。」 ([源(https://en.wikipedia.org/wiki/Julian_day)) – C14L
您應該閱讀[this](https://www.sqlite.org/datatype3.html)和[this](https://www.sqlite.org/lang_datefunc.html)。 TLDR:這些不是來自SQLite的POV的日期,它們是文本,它們被作爲文本排序。 – Blorgbeard
你的'event_date'可能是一個刺探,而不是一個日期時間數據字段。修復你的模式。 – C14L
啊,是的,請閱讀文檔! –