我有一个大型的sqlite数据库,具有相似的表
/* Create a table called NAMES */
BEGIN TRANSACTION;
/* Create a table called NAMES */
CREATE TABLE NAMES(Id integer PRIMARY KEY, date DATETIME CURRENT_TIMESTAMP,Name text);
/* Create few records in this table */
INSERT INTO NAMES VALUES(1,DATETIME('now'),'Tom');
INSERT INTO NAMES VALUES(2,DATETIME('now'),'Lucy');
INSERT INTO NAMES VALUES(3,DATETIME('now'),'Frank');
INSERT INTO NAMES VALUES(4,DATETIME('now'),'Jane');
INSERT INTO NAMES VALUES(5,DATETIME('now'),'Robert');
COMMIT;
我想获取与今天相对应的行。
SELECT * FROM NAMES WHERE date=DATE('now')
,但不返回任何内容。如何获得与当天对应的行?
答案 0 :(得分:2)
您可以尝试以下查询:
SELECT *
FROM NAMES
WHERE date >= DATE('now') AND date < DATE('now', '+1 day');
这将限制于今天在任何时间出现的所有日期时间值,但严格小于第二天的午夜。
这可能是最好的方法,因为它不涉及将date
列包装在函数中,这意味着SQLite可能仍使用date
上可能存在的索引。
答案 1 :(得分:1)
在两侧都使用DATE()
WHERE DATE(date) = DATE('now')