2011-12-05 39 views
6

Tôi đang phát triển một ứng dụng bằng Java (J2SE).
Tôi cần lưu trữ Thời gian trong cơ sở dữ liệu (ví dụ: 16:30:12).
Khi tôi cần lưu trữ ngày (Hoặc ngày + giờ), tôi chuyển đổi nó thành dấu thời gian Unix và tôi lưu trữ nó dưới dạng số Long.
Nhưng khi tôi chỉ cần Thời gian chứ không phải Ngày và Giờ, cách tốt nhất để lưu trữ nó là gì?
Tôi đang sử dụng SQLiteMS Access làm DBMS.Cách tốt nhất để lưu trữ thời gian (Chỉ ngày và không) trong cơ sở dữ liệu

Cảm ơn

Trả lời

2

Đó là ok để thời gian cửa hàng như thời gian-trong-mili giây từ null-ngày (01 tháng 1 năm 1970, 00:00:00 GMT). Bạn sẽ có thể dễ dàng thực hiện các phép so sánh trên trường dữ liệu dài này trong DB.

1

Bạn có thể lưu trữ như một bình thường String

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

Không phải là một ý tưởng tốt nếu bạn có kế hoạch sử dụng thời gian trong bất kỳ loại tính toán. – pintxo

4

Cách tốt hơn kể từ Java 8, hoặc bằng cách sử dụng thư viện Joda-Time trong các phiên bản trước đó:

Sử dụng các lớp LocalTime và trích xuất số giây kể từ nửa đêm. Bạn có thể lưu trữ số này dưới dạng three bytes number (0 to 86399) trong cơ sở dữ liệu của bạn (thay vì một ngày tám byte).

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 

Để đảo ngược:

// Get from database 
LocalTime time = LocalTime.ofSecondOfDay(secondOfDay); 
Các vấn đề liên quan