在数据库中存储时间(仅限时间和非日期)的最佳方式

时间:2011-12-05 10:58:31

标签: java date time storing-data

我正在使用Java(J2SE)开发一个应用程序 我需要在数据库中存储一个时间(例如16:30:12) 当我需要存储日期(或日期+时间)时,我将其转换为Unix时间戳,并将其存储为Long数字。
但是,当我只需要时间而不是日期和时间时,最好的存储方式是什么? 我正在使用SQLiteMS Access作为DBMS。

由于

3 个答案:

答案 0 :(得分:5)

Java 8以来更好的方法,或者在早期版本中使用Joda-Time库:

使用LocalTime类并提取自午夜以来的秒数。您可以将其存储为数据库中的three bytes number (0 to 86399)(而不是8字节的日期时间)。

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);

答案 1 :(得分:3)

可以将时间存储为null-date(1970年1月1日,格林威治标准时间00:00:00)的时间 - 毫秒。 您可以轻松地在DB中的这个长数据字段上进行比较操作。

答案 2 :(得分:1)

您可以将其存储为正常String

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
String time = sdf.format(Calendar.getInstance());