【问题标题】:How to get rows with current date from sqlite?如何从 sqlite 获取当前日期的行?
【发布时间】:2018-10-20 13:22:37
【问题描述】:

我有一个包含类似表的大型 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')

但它什么也不返回。如何获取当天对应的行?

【问题讨论】:

  • 请记住 sqlite 没有专用的date types。您将时间戳存储为一种格式的字符串,并将其与使用不同格式的字符串进行比较;当然它永远不会是平等的。

标签: sql sqlite


【解决方案1】:

两边都使用DATE()

WHERE DATE(date) = DATE('now')

【讨论】:

    【解决方案2】:

    您可以尝试以下查询:

    SELECT *
    FROM NAMES
    WHERE date >= DATE('now') AND date < DATE('now', '+1 day');
    

    这将限制在今天任何时候出现的所有日期时间值,但严格小于第二天的午夜。

    这可能是最好的方法,因为它不涉及将您的 date 列包装在一个函数中,因此这意味着 SQLite 可能仍然使用可能存在于 date 上的索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多