Лучший способ хранить время (только время и не дата) в базе данных - PullRequest
7 голосов
/ 05 декабря 2011

Я занимаюсь разработкой приложения с использованием Java (J2SE).
Мне нужно сохранить время в базе данных (например, 16:30:12).
Когда мне нужно сохранить дату (Или дата + время)Я конвертирую его в метку времени Unix и сохраняю его как Long число.
Но когда мне нужно только время, а не дата и время, как лучше всего его сохранить?
Я использую SQLite и MS Access как СУБД.

Спасибо

Ответы [ 3 ]

5 голосов
/ 13 января 2016

Лучший способ с 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);
3 голосов
/ 05 декабря 2011

Можно хранить время в виде миллисекунд от нулевой даты (1 января 1970 года, 00:00:00 по Гринвичу).Вы сможете легко выполнить операции сравнения для этого длинного поля данных в БД.

1 голос
/ 05 декабря 2011

Можно хранить как обычно String

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