sqlite选择特定月份的特定日期和非特定月份

sqlite选择特定月份的特定日期和非特定月份,sql,sqlite,date,timestamp,Sql,Sqlite,Date,Timestamp,我试图做的是从时间戳中选择特定的月份和日期。我尝试的是: SELECT t FROM test WHERE t BETWEEN '2015-08-01 00:00:00' AND '2015-08-01 23:59:59'; 8是指定的月份,1是指定的日期,但这不会返回任何内容 我想做的另一件事是选择一年中每个月的某一天,我已经尝试过,但我知道这是错误的,但我不知道如何去做: SELECT t FROM test WHERE t BETWEEN '2015-01-12 00:00:00' AN

我试图做的是从时间戳中选择特定的月份和日期。我尝试的是:

SELECT t FROM test WHERE t BETWEEN '2015-08-01 00:00:00' AND '2015-08-01 23:59:59';
8是指定的月份,1是指定的日期,但这不会返回任何内容

我想做的另一件事是选择一年中每个月的某一天,我已经尝试过,但我知道这是错误的,但我不知道如何去做:

SELECT t FROM test WHERE t BETWEEN '2015-01-12 00:00:00' AND '2015-24-12 23:59:59';
我可以理解为什么这不起作用,因为我从第一个月的那天到最后一个月的同一天都会记录时间戳,但是我怎么能做到呢

编辑:我找到了为什么它不适用于第一个示例,我在day中使用的变量包含一个数字,因此当它小于10时,它只表示而不是0,您可以使用LIKE子句来表示。此外,如果在:59之后有毫秒,则中间值将不适用于边缘情况

WHERE t LIKE '2015-08-01 %'
以及:


此外,关于优化,时间戳或类似的内容具有文本亲和力,尽管文档似乎暗示它是数字的。如果您有索引,它应该允许类似的优化,但是如果您能够管理它,使用范围可能会更好。我会检查查询计划。

请编辑您的问题并提供示例数据。一个小的SQL提琴也可以帮助我们了解出了什么问题。您所说的查询计划是什么意思?我还是sql新手,正在做一些尝试和错误,以前从未听说过查询计划?@Sumsar1812执行查询时,它会计划以最佳方式执行查询。有时,您会创建索引以加快对某些字段的访问,如where子句中的字段。如果您是在少量数据上执行此操作,或者作为测试或一次性操作,那么这可能无关紧要。但是如果它是一个会变得很大,或者使用量很大的东西,那么你需要确保它的性能良好。一种方法是检查查询的计划。
WHERE t LIKE '2015-%-12 %'