1

假设我有一张桌子,上面有人们的名字和他们的生日(日期和时间)。我希望能够使用以下 SQL for SQLite 找到人们今天的生日(日期和时间)。

SELECT * FROM Btable WHERE Bday = date('yyyy-MM-dd')

但是,它总是返回 nil 数据集。我还需要包括时间吗?

我的 SQL 语句到底有什么问题?如果是这样,查询今天日期的正确 SQL 语句是什么。

更新:

这是我使用 BETWEEN 逻辑的实际 SQL 语句:

SELECT * 
FROM Alarms 
WHERE ALARMSTATE IN (0,1,2) 
  AND ALARMPRIORITY IN (0,1,2,3,4) 
  AND ALARMGROUP IN (0,1,2,3,4,5,6,7) 
  AND ALARMTIME BETWEEN date(2012-08-02) 
                    AND date(2012-08-3) 
ORDER BY ALARMTIME DESC
4

2 回答 2

0

这是我的答案。

由于我的 ALARMTIME 列是 TEXT,我可以使用以下 SQL 语句查询我的表并检索我正在寻找的数据集。

SELECT *
FROM Alarms
WHERE ALARMSTATE IN (0,1,2)
  AND ALARMPRIORITY IN (0,1,2,3,4)
  AND ALARMGROUP IN (0,1,2,3,4,5,6,7)
  AND ALARMTIME LIKE "2012/08/01%"
  ORDER BY ALARMTIME DESC

我根本无法将我的 ALARMTIME 文本转换为日期时间类型。

于 2012-08-06T13:57:20.267 回答
0

我没有启动实例,但这应该可以。

SELECT * FROM Btable WHERE Bday >= julianday(date('now')));

这应该像这样返回一个字符串:

2012-08-02 00:00:00

查询的错误在于它可能缺少毫秒或其他一些精度,这些精度总是会被评估为假。

于 2012-08-02T14:23:40.337 回答