我有一个评论表,我在DATETIME字段中存储评论发布的日期和时间。我想知道的是,如何在一天内完成所有评论。显然,评论可以在当天的任何时间发布。
到目前为止,我能想到的最好的方法是使用BETWEEN 'YYYY-MM-DD 00:59:59' AND 'YYYY-MM-DD 23:59:59'
,其中两个日期都是我想要的日期或LIKE 'YYYY-MM-DD%'
。
当然,还有比这更好的方法吗?
非常感谢提前。
答案 0 :(得分:3)
为了获得一天的所有记录,您可以在查询的“where”部分使用date()函数,这有两个目的:
- 截断日期时间记录中的时间部分
- 解析所需日期的“YYYY-MM-DD”值
这里我们创建一个包含2条记录的表,其中一个时间戳为2007年1月1日,另一条记录为今天的datetime时间戳。然后我们分别选择这两个记录:
bash-3.2$ sqlite3 some.db
SQLite version 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite> create table myTable (txt varchar(25), timestamp DATETIME);
sqlite> insert into myTable (txt, timestamp) Values ('asdf',datetime());
sqlite> insert into myTable (txt, timestamp) Values ('asdf-2','2007-01-01 10:00:00');
sqlite> select * from myTable where date(timestamp) = date('2007-01-01');
asdf-2|2007-01-01 10:00:00
sqlite> select * from myTable where date(timestamp) = date(datetime());
asdf|2016-11-17 17:09:15
sqlite>