我正在開發使用Java(J2SE)的應用程序。
我需要在數據庫中存儲時間(例如16:30:12)。
當我需要存儲日期(或日期+時間)時,我將它轉換爲Unix時間戳,並將其存儲爲Long
數字。
但是,當我只需要時間而不是日期和時間什麼是最好的方式來存儲它?
我使用SQLite
和MS Access
作爲DBMS。在數據庫中存儲時間(只有時間和不是日期)的最佳方式
感謝
我正在開發使用Java(J2SE)的應用程序。
我需要在數據庫中存儲時間(例如16:30:12)。
當我需要存儲日期(或日期+時間)時,我將它轉換爲Unix時間戳,並將其存儲爲Long
數字。
但是,當我只需要時間而不是日期和時間什麼是最好的方式來存儲它?
我使用SQLite
和MS Access
作爲DBMS。在數據庫中存儲時間(只有時間和不是日期)的最佳方式
感謝
它的確定到店時間,時間在-毫秒的空日期(1970年1月1日,00:00:00 GMT )。 您可以輕鬆地在數據庫中的這個長數據字段上進行比較操作。
可以存儲作爲一個正常的String
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
String time = sdf.format(Calendar.getInstance());
一種更好的方式,因爲Java 8
,或在早期版本中使用Joda-Time
庫:
使用LocalTime
類和自午夜提取的秒數。您可以將其作爲three bytes number (0 to 86399)
存儲在數據庫中(而不是八字節的日期時間)。
https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html
LocalTime time = LocalTime.parse("12:34:45");
int secondOfDay = time.toSecondOfDay();
// Save to database
爲了扭轉:
// Get from database
LocalTime time = LocalTime.ofSecondOfDay(secondOfDay);
如果你不打算使用時間在任何類型的計算是個好主意。 – pintxo