Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是Sqlite SQL语句,仅用于查找今天的记录?_Sql_Database_Sqlite_Date_Dataset - Fatal编程技术网

什么是Sqlite SQL语句,仅用于查找今天的记录?

什么是Sqlite SQL语句,仅用于查找今天的记录?,sql,database,sqlite,date,dataset,Sql,Database,Sqlite,Date,Dataset,就说我有一张桌子,上面有人们的名字和生日(日期和时间)。我希望能够使用下面的SQL for SQLite找到今天人们的生日(日期和时间) SELECT * FROM Btable WHERE Bday = date('yyyy-MM-dd') 但是,它总是返回nil数据集。我还需要包括时间吗 我的SQL语句到底出了什么问题?如果是这样,查询今天日期的正确SQL语句是什么 更新: 下面是我使用中间逻辑的实际SQL语句: SELECT * FROM Alarms WHERE ALARMSTAT

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

SELECT * FROM Btable WHERE Bday = date('yyyy-MM-dd')
但是,它总是返回nil数据集。我还需要包括时间吗

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

更新:

下面是我使用中间逻辑的实际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

我没有一个实例,但这应该是可行的

SELECT * FROM Btable WHERE Bday >= julianday(date('now')));
这将返回如下字符串:

2012-08-02 00:00:00
查询的错误在于它可能缺少毫秒或其他精度,而这些精度的计算结果总是为false。

以下是我的答案

因为我的ALARMTIME列是文本,所以我可以用下面的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文本转换为datetime类型。

生日不在同一年。你可能想比较一天和一个月,而不是几年。@NikolaMarkovinović,是的,这是一个很糟糕的例子,但你有了这个想法。:)我可以说这张表是一个报警日志,我想找到今天所有的报警日志-D在这种情况下,您需要将
BDay
截断为仅日期,或者更好地,在BDay>=my_date和BDay<(my_date+1天)的情况下进行过滤。不幸的是,我没有使用sqlite,因此无法提供准确的语法。@NikolaMarkovinović,我还尝试了与您之前评论中所说的非常类似的中间逻辑。对于datetime列,您最好使用>=和<,而不是介于两者之间。这避免了分辨率问题(我是否扣除毫秒?或3?以便能够在两者之间使用)。不幸的是,SQLFiddle不起作用,所以我无法准备一些示例。你能把你的问题贴出来吗?