strftime('%s', 'now') - Unix Timestamp
Hàm strftime('%s', ...) trả về số giây từ 1/1/1970 (Unix epoch). Dễ dàng so sánh, tính toán, lưu trữ dưới dạng INTEGER.
DatabaseHelper.java
public ArrayList<String> getAllContacts() {
ArrayList<String> list = new ArrayList<>();
SQLiteDatabase db = getReadableDatabase();
// %s = Unix timestamp (giây)
Cursor cursor = db.rawQuery(
"SELECT id, name, salary, strftime('%s', 'now') as timestamp " +
"FROM " + TABLE_NAME, null);
if (cursor.moveToFirst()) {
do {
int id = cursor.getInt(0);
String name = cursor.getString(1);
String salary = new String(cursor.getBlob(2));
long ts = cursor.getLong(3);
list.add(id + " : " + name + " : " + salary + " : " + ts);
} while (cursor.moveToNext());
}
cursor.close();
return list;
}
Các định dạng strftime thường dùng
| Format | Kết quả | Mô tả |
|---|---|---|
| %s | 1704067200 | Unix timestamp (giây) |
| %Y | 2024 | Năm 4 chữ số |
| %m | 01 | Tháng (01-12) |
| %d | 31 | Ngày (01-31) |
| %H | 14 | Giờ 24h (00-23) |
| %M | 30 | Phút (00-59) |
| %S | 45 | Giây (00-59) |
| %Y-%m-%d %H:%M:%S | 2024-01-01 14:30:45 | Đầy đủ |
Ứng dụng thực tế
-- Lấy timestamp hiện tại
SELECT strftime('%s', 'now');
-- Chuyển cột datetime sang timestamp
SELECT strftime('%s', created_at) FROM table;
-- Tìm bản ghi trong 24h qua
SELECT * FROM table
WHERE strftime('%s', created_at) > strftime('%s', 'now', '-1 day');
-- Tính khoảng cách (giây)
SELECT strftime('%s', 'now') - strftime('%s', created_at) AS diff_seconds;
Kết quả

Hiển thị timestamp dạng số nguyên (giây) thay vì chuỗi ngày giờ.
Lưu ý
- SQLite lưu ngày giờ dạng TEXT (ISO8601), REAL (Julian day), hoặc INTEGER (Unix timestamp).
- Dùng INTEGER + strftime('%s') cho hiệu năng tốt nhất khi so sánh, index.
- Java:
System.currentTimeMillis()/1000để lấy timestamp giây.