2012-11-09 29 views
10

Tôi biết rằng để chèn một datetime định dạng này yyyy-mm-dd hh:mm:ss nên được sử dụng.Làm thế nào để chèn datetime với múi giờ để SQLite?

Tuy nhiên, tập dữ liệu của tôi có trường dấu thời gian trông giống như yyyy-mm-dd hh:mm:ss +/-0X:00, trong đó X có thể có nhiều giá trị và khác với múi giờ địa phương của máy tính của tôi.

Cách tốt nhất để chèn trường datetime với thông tin múi giờ như thế vào SQLite là gì?

+4

Tôi luôn chèn thời gian được chuyển đổi thành Greenwich (UTS + 0) và khách hàng sẽ chuyển đổi giờ thành giờ địa phương khi truy xuất từ ​​cơ sở dữ liệu. Bằng cách này bạn không cần phải lưu trữ múi giờ trong cơ sở dữ liệu. Nếu bạn thực sự cần lưu trữ múi giờ của khách hàng đã đo thời gian, hãy đặt múi giờ đó vào một cột khác. – farfareast

+0

Cách dễ dàng là lưu trữ thời gian dưới dạng varcahar/string và sau đó bí mật quering –

+2

@EmmanuelN - Đó là một ý tưởng khủng khiếp - nó sẽ làm việc với ngày/giờ khó khăn hơn; luôn lưu trữ các giá trị theo loại tốt nhất có thể. farfareast có ý tưởng tốt hơn; mặc dù, tôi có thể nói UTC, mà không có tiết kiệm ánh sáng ban ngày (không chắc chắn về Greenwich). –

Trả lời

8

Chức năng ngày và giờ tích hợp của SQLite chỉ hiểu các chuỗi dấu thời gian không có thông tin múi giờ.

Nếu bạn muốn xử lý các múi giờ, bạn phải hoặc là

  • chuyển đổi tất cả các timestamps đến một múi giờ cụ thể (UTC), do đó bạn có thể sử dụng chức năng SQLite trên chúng và có thể sử dụng chúng để phân loại; hoặc
  • để lại thông tin múi giờ trong đó, nhưng thực hiện tất cả tính toán và sắp xếp không có trong SQL nhưng trong ứng dụng của bạn.
Các vấn đề liên quan