Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách sử dụng 'now' trong timestamp Android SQLite

Giới thiệu

SQLite cung cấp từ khóa 'now' để lấy thời gian hiện tại. Ví dụ này demo cách truy vấn bản ghi của hôm nay (từ 00:00 hôm nay đến giờ).

Các bước

Bước 1 & 2: Project & Layout

Giao diện chuẩn: 2 EditText, 4 Button, 1 ListView.

Bước 3: MainActivity.java

Code xử lý sự kiện click tương tự các bài trước.

Bước 4: DatabaseHelper.java - Lọc ngày hôm nay

package com.example.andy.myapplication;

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

class DatabaseHelper extends SQLiteOpenHelper {
    static final String DB_NAME = "salaryDatabase5";
    static final String TABLE = "SalaryDetails";

    DatabaseHelper(Context ctx) { super(ctx, DB_NAME, null, 1); }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + TABLE +
                "(id INTEGER PRIMARY KEY, name TEXT, salary TEXT, datetime DEFAULT CURRENT_TIMESTAMP)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int o, int n) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE);
        onCreate(db);
    }

    boolean insert(String n, String s) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("name", n); cv.put("salary", s);
        db.replace(TABLE, null, cv);
        return true;
    }

    ArrayList getAllContacts() {
        SQLiteDatabase db = getReadableDatabase();
        ArrayList list = new ArrayList<>();

        // Lọc bản ghi từ 00:00 hôm nay (DATE('now'))
        Cursor res = db.rawQuery(
            "SELECT (id || ' : ' || name || ' : ' || salary || ' : ' || datetime) AS fullname " +
            "FROM " + TABLE + " WHERE datetime >= DATE('now')", null);

        while (res.moveToNext()) {
            list.add(res.getString(res.getColumnIndex("fullname")));
        }
        return list;
    }

    boolean update(String n, String s) {
        getWritableDatabase().execSQL("UPDATE " + TABLE + " SET name='" + n + "', salary='" + s + "'");
        return true;
    }

    boolean delete() {
        getWritableDatabase().execSQL("DELETE FROM " + TABLE);
        return true;
    }
}

Giải thích DATE('now')

DATE('now') trả về ngày hiện tại theo định dạng YYYY-MM-DD (giờ là 00:00:00). So sánh datetime >= DATE('now') sẽ giữ lại các bản ghi từ đầu ngày hôm nay đến hiện tại.

Kết quả

Cách sử dụng  now  trong timestamp Android SQLite

Chỉ hiển thị các bản ghi được tạo trong ngày hôm nay.