2011-12-05 10 views
6

Zajmuję się tworzeniem aplikacji przy użyciu języka Java (J2SE).
Potrzebuję przechowywać czas w bazie danych (np. 16:30:12).
Gdy potrzebuję zapisać datę (lub datę + czas), konwertuję ją na uniksowy znacznik czasu i zapisuję ją jako numer Long.
Ale kiedy potrzebuję tylko czasu, a nie daty i czasu, jaki jest najlepszy sposób jego przechowywania?
Używam SQLite i MS Access jako DBMS.Najlepszy sposób na przechowywanie czasu (tylko data i godzina) w bazie danych

Dzięki

Odpowiedz

2

Jest ok do czasu przechowywania, jak czas-in-milisekund od null-date (1 stycznia 1970, 00:00:00 GMT). Będziesz mógł łatwo wykonywać operacje porównania na tym długim polu danych w DB.

1

można zapisać jako normalny String

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

Nie jest to dobry pomysł, jeśli planujesz używać czas w jakiejkolwiek kalkulacji. – pintxo

4

Lepszym sposobem od Java 8 lub przy użyciu biblioteki Joda-Time we wcześniejszych wersjach:

Użyj klasę LocalTime i wyodrębnić liczbę sekund od północy. Możesz zapisać to jako three bytes number (0 to 86399) w bazie danych (zamiast 8-bajtowych datetime).

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 

Aby odwrócić:

// Get from database 
LocalTime time = LocalTime.ofSecondOfDay(secondOfDay); 
Powiązane problemy