我正在尝试在Android中编写一个SQLite查询,我从表中选择日期时间列的日期组件(存储为ISO 8601字符串)等于给定日期的所有行。基本上,我想选择具有特定日期的所有行,而忽略时间。
如何实现这一目标?
答案 0 :(得分:1)
使用此查询
select * from table_name where day=desired_day;
所以这段代码:
database.query("table_name", null, "day like ?",new String[]{"____-__-daynumber%"}, null, null, null, null);
查看此documentation以了解我如何找出要使用的sql正则表达式。这个正则表达式允许任何年份和任何月份。如果您只想在特定年份的特定月份中执行特定日期,请执行以下操作:
database.query("table_name", null, "day like ?",new String[]{"1983-03-22%"}, null, null, null, null);
这将是寻找1983年3月22日的一天
答案 1 :(得分:1)
SQLite有一些date time functions。在您的情况下,选择可能如下所示:
select * from table where date(your_date_time_column) = iso_8601_date_only_value;
答案 2 :(得分:0)
SELECT * FROM test
WHERE strftime('%Y-%m-%d', timecol)=strftime('%Y-%m-%d', '2008-04-12')
答案 3 :(得分:0)
您可以始终使用00:00:00和23:59:59作为开始和结束时间,只需在原始查询中使用< =和> =,例如......
SELECT * FROM the_table WHERE the_datetime_column >= '2011-11-15 00:00:00' AND the_datetime_column <= '2011-11-15 23:59:59'