簡體   English   中英

如何在月初至今天之間查詢SQLite數據

[英]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 monthlocaltime 改性劑的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_dateTEXT類型,則可以使用字符串串聯查詢

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM