我有一个包含column_date的表,其中日期保存为字符串yyyy-mm-dd 我通过代码查询上周
String query = "select * from table_name where e_date >= date('now','-7 days') order by e_date DESC";
它工作正常,但如果我使用
String query = "select * from expenses where e_date >= date('now','-30 days') order by e_date DESC";
它给了我最后 30 天的时间,但我需要的是当前月份从第一天到现在的时间。 感谢任何帮助,并提前致谢。
最佳答案
有月初
和本地时间
modifers对于 SQLite date()
函数,因此您可以简单地执行
String query = "SELECT * FROM expenses WHERE e_date BETWEEN date('now','localtime','start of month') AND date('now','localtime') "
<小时/>
如果你想用Java来做,你可以使用SimpleDateFormat
获取今天和月初的 yyyy-MM-dd 字符串。
然后假设e_date
类型为TEXT
,则可以通过字符串连接进行查询
String query = "SELECT * FROM expenses WHERE " + monthStart + " <= e_date AND e_date <= " + today;
或者,使用BETWEEN
String query = "SELECT * FROM expenses WHERE e_date BETWEEN " + monthStart + " AND " + today;
例如
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, 1);
String monthStart = dateFormat.format(c.getTime());
c = Calendar.getInstance(); // reset
String today = dateFormat.format(c.getTime());
System.out.println(monthStart + " to " + today);
在 2016 年 3 月 16 日运行此命令将打印
2016-03-01 to 2016-03-16
关于java - 如何查询月初到今天的 SQLite 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36046196/