2016-04-21 78 views
-1

我想在SQLite上存儲用戶輸入的日期,但是我設法弄清楚的是如何添加android設備設置的當前日期。我希望用戶能夠使用expirydate和recieveddate的日期,而不是從設備設置中獲取日期。SQLite存儲日期問題

這裏是我的代碼..

package com.example.bash1.sqlitediss; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

import java.text.SimpleDateFormat; 
import java.util.Date; 

public class DatabaseHelper extends SQLiteOpenHelper { 
// Database name 
public static final String DATABASE_STOCKDB = "Stock.db"; 
// Column names 
public static final String TABLE_NAME = "stock_table"; 
public static final String COL_1 = "ID"; 
public static final String COL_2 = "Name"; 
public static final String COL_3 = "Datereceived"; 
public static final String COL_4 = "Expirydate"; 


public DatabaseHelper(Context context) { 
    super(context, DATABASE_STOCKDB, null, 1); 

} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("create table " + TABLE_NAME + " (" + COL_1 + " INTEGER PRIMARY KEY," + COL_2 + " TEXT," + COL_3 + " DATE," + COL_4 + " DATE" + ")"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 

    onCreate(db); 
} 

public boolean insertData(String Name, String Datereceived, String Expirydate){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(COL_2, Name); 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    contentValues.put(COL_3, dateFormat.format(new Date())); 
// contentValues.put(COL_3, Datereceived); 
    contentValues.put(COL_4, dateFormat.format(new Date())); 
    long result = db.insert(TABLE_NAME,null,contentValues); 
    if (result == -1) 
     return false; 
    else 
     return true; 

} 

// Calls all data for the View Database Button 
public Cursor getAllData(){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor res = db.rawQuery("select * from " + TABLE_NAME, null); 
    return res; 

} 

} 
+1

我相信你需要以這種格式存儲日期'9999-12-31 23:59:59'並訪問https://www.sqlite.org/lang_datefunc.html – Bharatesh

回答

0

您可以使用ORDER BY無論是升序或降序排序,下面是查詢

這是對上升下降單獨改變ASC到DESC並把你的適當的表名和列名稱。 DATE_ADD功能可以用來做到這一點。

注意:當前日期應該是sql日期格式。

"select * from " + TABLE_NAME + "column_name < (DATE_SUB(yourCurrentDate, INTERVAL 30 DAY));" 
+0

是否有可能做出一個查詢只報告在到期日期前不到30天的物品?失效日期的格式爲:yy:mm:dd –

+0

'ASC'是可選的,因爲它是默認的,如果省略。 –

+0

@AshleyThompson ::這可以通過這個查詢來實現。 – Jeevanandhan

0

下面只是與查詢以及如何在表中存儲日期(即日期格式)..希望這會有所幫助。

enter image description here
更新:
查詢得到CURRENTDAY-30天看起來像這樣

Calendar calendar=Calendar.getInstance(); 
calendar.add(Calendar.DAY_OF_YEAR, -30); 
String last30Days=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); 
System.out.println(last30Days); 

//your query look like this 
//"SELECT * FROM your_table where date_column_name>'"+last30Days+"'" 
//SELECT * FROM your_table where date_column_name>'2016-03-20 00:00:00' 

happyCoding;

+0

非常感謝,但我怎麼會得到它從今天的日期30天運行查詢?而不是指定一個日期? –

+0

我不知道任何種類的方法是否有或沒有..但通常我用java'Calender' api - > currentDate - 30天.. .. – Bharatesh

+0

這樣做這個不知道如何工作到一個查詢︰$ –