Hàm TIME() trong SQLite
TIME() trích xuất phần giờ (HH:MM:SS) từ chuỗi ngày giờ. Kết hợp modifier 'localtime' chuyển UTC → giờ địa phương.
DatabaseHelper.java
public ArrayList<String> getAllContacts() {
ArrayList<String> list = new ArrayList<>();
SQLiteDatabase db = getReadableDatabase();
// time(datetime, 'localtime') lấy giờ địa phương từ cột datetime
Cursor cursor = db.rawQuery(
"SELECT id, name, salary, TIME(datetime, 'localtime') as local_time " +
"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));
String localTime = cursor.getString(3);
list.add(id + " : " + name + " : " + salary + " : " + localTime);
} while (cursor.moveToNext());
}
cursor.close();
return list;
}
Các modifier của TIME() / DATETIME()
| Modifier | Ví dụ | Kết quả |
|---|---|---|
| 'localtime' | TIME('now', 'localtime') | Giờ địa phương thiết bị |
| 'utc' | TIME('now', 'utc') | Giờ UTC |
| '+N hours' | TIME('now', '+3 hours') | Cộng 3 giờ |
| '-N minutes' | TIME('now', '-30 minutes') | Trừ 30 phút |
| 'start of day' | TIME('now', 'start of day') | 00:00:00 hôm nay |
| 'start of month' | DATE('now', 'start of month') | Ngày 1 tháng này |
Kết hợp DATE() và TIME()
-- Tách ngày và giờ từ cột datetime
SELECT
DATE(created_at) as ngay,
TIME(created_at) as gio,
DATE(created_at, 'localtime') as ngay_local,
TIME(created_at, 'localtime') as gio_local
FROM SalaryDetails;
Kết quả

Hiển thị giờ địa phương (HH:MM:SS) từ cột datetime đã lưu.
Lưu ý
- Cột datetime lưu DEFAULT CURRENT_TIMESTAMP → giá trị UTC.
- TIME(datetime, 'localtime') chuyển đổi tại thời điểm QUERY, không thay đổi dữ liệu gốc.
- Nếu muốn lưu giờ địa phương: INSERT TIME('now', 'localtime') hoặc dùng trigger.
- Android: TimeZone.getDefault() ảnh hưởng đến 'localtime'.