2009-12-19 38 views

Trả lời

119

Các định dạng mà bạn cần là:

'2007-01-01 10:00:00' 

ví dụ: yyyy-MM-dd HH: mm: ss

Nếu có thể, hãy sử dụng truy vấn được tham số vì điều này giải phóng bạn khỏi lo lắng bout các chi tiết định dạng.

+0

như thế nào một thứ tự theo ngày với chuỗi như vậy? –

+3

Khi bạn định dạng các ngày như thế này, thứ tự ngày tháng và thứ tự từ vựng sẽ hoạt động giống nhau. Ví dụ. '2008-02-01'> '2007-02-01', '2008-01-02'> '2008-01-01' cả dạng chuỗi và ngày tháng. Nhưng bạn không hoàn toàn cần phải quan tâm đến điều này bởi vì SQLite ORDER BY sẽ chăm sóc đặt hàng cho bạn. – itowlson

+5

Lưu ý rằng bạn không thể so sánh đáng tin cậy các ngày có độ chính xác khác nhau bằng cách sử dụng thứ tự từ vựng, ví dụ: "SELECT" 2007-01-02 10:00:00 '>' 2007-01-02 10:00 '; " trả về 1 nhưng "datetime SELECT ('2007-01-02 10:00:00')> datetime ('2007-01-02 10:00');" trả về 0. – Shane

40

Cách để lưu trữ ngày tháng trong SQLite là:

yyyy-mm-dd hh:mm:ss.xxxxxx 

SQLite cũng có một số chức năng ngày và thời gian bạn có thể sử dụng. Xem SQL As Understood By SQLite, Date And Time Functions.

+1

FYI, '.xxxxxx' ở đây trong cú pháp của @ TorValamo =' .SSS' =% f trong tài liệu SQLite, tức là số giây phân số. –

+2

DateTime.parse ('2016-05-28 14:27:00 -0300'). Strftime ('% Y-% m-% d% H:% M:% S') – rodvlopes

16

Bạn phải thay đổi định dạng của chuỗi ngày bạn đang cung cấp để có thể chèn nó bằng chức năng STRFTIME. Lý do là, không có tùy chọn cho một từ viết tắt tháng:

%d day of month: 00 
%f fractional seconds: SS.SSS 
%H hour: 00-24 
%j day of year: 001-366 
%J Julian day number 
%m month: 01-12 
%M minute: 00-59 
%s seconds since 1970-01-01 
%S seconds: 00-59 
%w day of week 0-6 with sunday==0 
%W week of year: 00-53 
%Y year: 0000-9999 
%% % 

Cách khác là để định dạng ngày/giờ vào một định dạng đã được chấp nhận:

  1. YYYY-MM-DD
  2. YYYY- MM-DD HH: MM
  3. YYYY-MM-DD HH: MM: SS
  4. YYYY-MM-DD HH: MM: SS.SSS
  5. YYYY-MM-DDThh: mm
  6. YYYY-MM-DDThh: MM: SS
  7. YYYY-MM-DDThh: mm: SS.SSS
  8. HH: MM
  9. HH: MM: SS
  10. HH: MM: SS.SSS
  11. tại

tham khảo: SQLite Date & Time functions

+0

Mặc dù không được liệt kê trong bảng tài liệu cũng nêu rõ rằng bạn có thể thêm 'Z' hoặc các offset như '-0400' – CoolAJ86

0

Điều này có thể không phải là phương pháp phổ biến nhất hay hiệu quả, nhưng tôi có xu hướng bỏ qua kiểu dữ liệu mạnh mẽ trong SQLite sinc e tất cả về cơ bản chúng được bán phá giá thành chuỗi.

Tôi đã viết một trình bao bọc C# mỏng quanh thư viện SQLite trước đây (khi sử dụng SQLite với C#, tất nhiên) để xử lý chèn và trích xuất đến và từ SQLite như thể tôi đang xử lý đối tượng DateTime.

+0

Không cắt nó cho các ngày, ví dụ: bạn muốn sắp xếp theo lĩnh vực đó; bạn kết thúc với một so sánh chuỗi ... – Greg

+2

So sánh chuỗi các ngày hoạt động tốt với thứ tự YYYY-MM-DD. – dan04

5

Đọc This: 1.2 Date và Time Datatype kiểu dữ liệu tốt nhất cho đến nay cửa hàng và thời gian là:

TEXT dạng tốt nhất là: yyyy-MM-dd HH:mm:ss

Sau đó đọc this trang; đây là giải thích tốt nhất về ngày và giờ trong SQLite. Tôi hy vọng điều này giúp bạn

+3

Bạn nên xem xét trả lời câu hỏi, với các liên kết hỗ trợ câu trả lời của bạn, không chỉ là một loạt các liên kết –

5

Sử dụng CURRENT_TIMESTAMP khi bạn cần đến nó, thay vì NOW() (đó là MySQL)

+1

điều này được làm việc, một điều là sai. CURRENT_TIMESTAMP trả về ngày giờ mà không có UTC, bạn có biết cách giải quyết vấn đề này không. Cảm ơn bạn trước! –

Các vấn đề liên quan