从特定日期选择记录
在我的表中,我存储的数据类似2015-11-24 14:53
。从特定日期选择记录
当我尝试从日期2015-11-24
SELECT * FROM TRANSACTIONS where id='22'
and date >= date('2015-11-24 00:00')
and date <= date('2015-11-24 23:59')
我没有得到任何东西。(有与最新记录)
如果你被id
,这应该是唯一的选择,没有必要通过date
选择。您可以考虑选择非唯一字段(在这种情况下,date
),如搜索。但是你说“选择这个特定的行(id为22的行),然后检查它是否符合这些日期参数”。所以使用这个语句你只会得到0或1的结果。
你应该改变你的声明是这样的
SELECT * FROM TRANSACTIONS where
date >= date('2015-11-24 00:00')
and date <= date('2015-11-24 23:59')
然而,正如Allinone51指出,如果你的领域是TEXT
型的,安全的赌注是调用您的文本字段date()
功能
SELECT * FROM TRANSACTIONS where
date(date) >= date('2015-11-24 00:00')
and date(date) <= date('2015-11-24 23:59')
这就是说,非日期比较应该工作。为了测试这个,在命令窗口中打开sqlite3并运行select date('2015-11-24 23:59');
。结果将是2015-11-24
。
如果我们用前一天的日期进行测试,下面是使用布尔运算符的各种组合和使用date()
函数的结果。
sqlite> SELECT (date('2015-11-24 23:59') == '2015-11-24');
1
sqlite> SELECT (date('2015-11-24 23:59') >= '2015-11-23');
1
sqlite> SELECT (date('2015-11-24 23:59') <= '2015-11-23');
0
sqlite> SELECT (date('2015-11-24 23:59') < '2015-11-23');
0
sqlite> SELECT (date('2015-11-24 23:59') > '2015-11-23');
1
sqlite> SELECT (date('2015-11-24 23:59') == date('2015-11-24'));
1
sqlite> SELECT (date('2015-11-24 23:59') >= date('2015-11-23'));
1
sqlite> SELECT (date('2015-11-24 23:59') <= date('2015-11-23'));
0
sqlite> SELECT (date('2015-11-24 23:59') < date('2015-11-23'));
0
sqlite> SELECT (date('2015-11-24 23:59') > date('2015-11-23'));
1
所以,如果我把样品date
值在你的声明,我结束了这个结果
SELECT date('2015-11-24') >= date('2015-11-24 00:00')
and date('2015-11-24') <= date('2015-11-24 23:59');
1
最后一点:作为Allinone51在评论中指出,date('2015-11-24 00:00')
和date('2015-11-24 23:59')
返回相同值,2015-11-24
。
sqlite> SELECT date('2015-11-24 00:00');
2015-11-24
sqlite> SELECT date('2015-11-24 23:59');
2015-11-24
基于此,也许你想datetime()
函数?
我可能是错的,但是,date('2015-11-24 00:00')是不是返回与('2015-11-24 23:59')相同的值? – Allinone51
@ Allinone51是的,但这是OP在他原来的问题中使用的,所以我决定使用它。如果没有他们的数据,我会尽量让示例尽可能接近他们提供的内容。 – StephenH
好吧,我只是想知道。 – Allinone51
您可以选择所有与记录中选择记录某日是这样的:
SELECT * FROM yourTable WHERE date('yourDateColumn') = 'your date';
你的情况:
SELECT * FROM TRANSACTIONS WHERE date(date) = '2015-11-24';
date()选择DATETIME的'date'部分。例如:
date('2014-01-01 00:00:00') would return '2014-01-01'
您正在选择一个ID为22的记录,如果其日期介于2个给定值之间,则只会获得该记录。 – Allinone51
所以我假设你的日期存储为['TEXT'](https://www.sqlite.org/datatype3.html)? – StephenH