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

RYN*_*RYN 7 java time date storing-data

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

谢谢

aho*_*b7x 5

可以将时间存储为从空日期(1970 年 1 月 1 日,格林威治标准时间 00:00:00)开始的毫秒时间。您将能够轻松地对 DB 中的这个长数据字段进行比较操作。


Gui*_* F. 5

更好的方法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
Run Code Online (Sandbox Code Playgroud)

扭转:

// Get from database
LocalTime time = LocalTime.ofSecondOfDay(secondOfDay);
Run Code Online (Sandbox Code Playgroud)