在SQLite中按日期排序结果的帮助

5

在SQLite中,有没有一种方法可以按日期排序,并按时间而不是字母顺序排序结果?

例如:

SELECT * FROM details GROUP BY date;

John    |     Smith     |     April 01, 2011
John    |     Smith     |     April 03, 2011
John    |     Smith     |     April 04, 2011
John    |     Smith     |     March 25, 2011

三月应该在四月之前。

我猜想这里的答案是将日期存储为长时间戳,然而我不确定是否可以更轻松地使用SQLite完成。

谢谢!

4个回答

11

SQLite中没有内置的DATE类型(像其他一些数据库管理系统中那样),但它具有一套不错的日期和时间函数:http://www.sqlite.org/lang_datefunc.html

您可以使用date("April 01, 2011")来获取ISO-8601日期格式(例如2011-04-01)。

这种格式既易读,又易排序。按标准字符串比较规则,2011-03-25自然排在2011-04-01前面,因此不需要进行特殊操作。

因此,请使用该格式存储您的日期,并使用date()函数(或其他相关函数)获取该格式。


很容易,这对我很有帮助。非常感谢你的解释和帮助! - littleK
谢谢提供的链接,它帮了我大忙!SQLite 允许你创建一个 DATETIME 类型的列,但却可以将“hello”放入其中,这似乎有点愚蠢。不过至少我现在发现了 http://www.sqlite.org/datatype3.html。 - Magnus Smith
我只是不得不发一条感谢的帖子,我已经搜索和调试了几天这样的解决方案。非常好的解决方案,谢谢! - Yenthe

3

1

0
你可以像这样做:
select * from sometable order by date(thestringDateColumn)
希望这可以帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接