![](/img/trans.png)
[英]Spring - find all where difference between start date and today is bigger than 30 days (month)
[英]How to query SQLite data between start of month and today
我有一個包含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天,但我需要的是從一個月的第一天到現在的當前月份。 任何幫助表示贊賞,並在此先感謝。
還有start of month
和localtime
改性劑的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
我之前在Android應用程序中嘗試過
final SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd");
Calendar startCal = Calendar.getInstance();
startCal.set(Calendar.MONTH, month);
startCal.set(Calendar.DAY_OF_MONTH, 1);
Calendar endCal = Calendar.getInstance();
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT * FROM expenses WHERE date( e_date/1000,'unixepoch','localtime') >= '" + (SDF.format(startCal.getTime())) + "' And date( e_date/1000,'unixepoch','localtime') <= '" + (SDF.format(endCal.getTime())) + "'";
Cursor cursor = db.rawQuery(selectQuery, null);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.