SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Cách sắp xếp theo ngày trong SQLite

Vấn đề:

Bạn muốn sắp xếp các hàng theo ngày.

Ví dụ 1:

exam bảng có hai cột, subjectexam_date .

chủ đề exam_date
Toán học ngày 12 tháng 12 năm 2019
Tiếng Anh 2020-01-08
Khoa học 2020-01-05
Sức khỏe 2020-01-05
Nghệ thuật KHÔNG ĐẦY ĐỦ

Bạn muốn sắp xếp các hàng theo exam_date .

Giải pháp:

SELECT *
FROM exam
ORDER BY exam_date;

Kết quả trông như thế này (các hàng được sắp xếp theo thứ tự tăng dần theo exam_date ):

Chủ đề Ngày thi
Nghệ thuật KHÔNG ĐẦY ĐỦ
Toán học ngày 12 tháng 12 năm 2019
Khoa học 2020-01-05
Sức khỏe 2020-01-05
Tiếng Anh 2020-01-08

Thảo luận:

Sử dụng ORDER BY từ khóa và tên của cột mà bạn muốn sắp xếp. Bằng cách này, bạn sẽ sắp xếp dữ liệu theo thứ tự tăng dần của cột này. Bạn cũng có thể sử dụng ASC từ khóa để làm rõ rằng thứ tự tăng dần (ngày sớm nhất được hiển thị trước, ngày mới nhất được hiển thị sau cùng, v.v.).

SELECT *
FROM exam
ORDER BY exam_date ASC;

Nếu bạn muốn xem ngày mới nhất trước và ngày sớm nhất sau cùng, bạn cần sắp xếp theo thứ tự giảm dần. Sử dụng DESC từ khóa trong trường hợp này.

SELECT *
FROM exam
ORDER BY exam_date DESC;

Lưu ý rằng trong SQLite, NULL s được hiển thị đầu tiên khi sắp xếp theo thứ tự tăng dần và cuối cùng khi sắp xếp theo thứ tự giảm dần. Ngoài ra, các hàng có cùng exam_date được hiển thị theo thứ tự ngẫu nhiên (bạn có thể thấy Science thứ hai và Health thứ ba, hoặc Health thứ hai và Science thứ ba).

Ví dụ 2:

exam bảng có các cột sau:subject , exam_year , exam_monthexam_day . Các tháng được viết bằng tên, không phải bằng số.

chủ đề exam_year exam_month exam_day
Toán học 2019 Tháng 12 19
Tiếng Anh 2020 tháng 1 8
Khoa học 2020 tháng 1 5
Sức khỏe 2020 tháng 1 5
Nghệ thuật KHÔNG ĐẦY ĐỦ KHÔNG ĐẦY ĐỦ KHÔNG ĐẦY ĐỦ

Giải pháp:

SELECT *
FROM exam
ORDER BY exam_year,
 (CASE exam_month
    WHEN 'January' THEN 1
    WHEN 'February' THEN 2
    WHEN 'March' THEN 3
    WHEN 'April' THEN 4
    WHEN 'May' THEN 5
    WHEN 'June' THEN 6
    WHEN 'July' THEN 7
    WHEN 'August' THEN 8
    WHEN 'September' THEN 9
    WHEN 'October' THEN 10
    WHEN 'November' THEN 11
    WHEN 'December' THEN 12
  END),
  exam_day;

Kết quả trông như thế này (các hàng được sắp xếp theo thứ tự tăng dần theo exam_year , exam_monthexam_day ):

chủ đề exam_year exam_month exam_day
Nghệ thuật KHÔNG ĐẦY ĐỦ KHÔNG ĐẦY ĐỦ KHÔNG ĐẦY ĐỦ
Toán học 2019 Tháng 12 19
Sức khỏe 2020 tháng 1 5
Khoa học 2020 tháng 1 5
Tiếng Anh 2020 tháng 1 8

Thảo luận:

Để sắp xếp các hàng theo ngày thi, trước tiên bạn cần sắp xếp theo năm, sau đó theo tháng số (không phải tên tháng) và cuối cùng là theo ngày. Bạn có thể chuyển đổi tên tháng thành tháng số bằng CASE WHEN mệnh đề. Sau CASE từ khóa, chỉ định tên của cột. Sau đó, sau mỗi WHEN, hãy nêu giá trị trong cột này, sử dụng từ khóa THEN và chỉ định giá trị mới bạn muốn chỉ định thay vì giá trị cũ. Ở đây, cột là exam_month , các giá trị hiện tại trong cột này là 'January ',' February ',…,' December ', và các giá trị mới là số tháng 1 , 2 ,…, 12 . Sau khi bạn hoàn tất việc chuyển đổi tất cả các giá trị, hãy nhớ sử dụng END từ khóa để đóng CASE WHEN mệnh đề. Hãy xem:

CASE exam_month
  WHEN 'January' THEN 1
  WHEN 'February' THEN 2
  WHEN 'March' THEN 3
  WHEN 'April' THEN 4
  WHEN 'May' THEN 5
  WHEN 'June' THEN 6
  WHEN 'July' THEN 7
  WHEN 'August' THEN 8
  WHEN 'September' THEN 9
  WHEN 'October' THEN 10
  WHEN 'November' THEN 11
  WHEN 'December' THEN 12
END

Đây là cách bạn chuyển đổi tên tháng thành số tháng. Bạn có thể sử dụng nó khi sắp xếp các hàng theo ngày, nghĩa là theo năm, tháng số và ngày.

ORDER BY exam_year,
 (CASE exam_month
    WHEN 'January' THEN 1
    WHEN 'February' THEN 2
    WHEN 'March' THEN 3
    WHEN 'April' THEN 4
    WHEN 'May' THEN 5
    WHEN 'June' THEN 6
    WHEN 'July' THEN 7
    WHEN 'August' THEN 8
    WHEN 'September' THEN 9
    WHEN 'October' THEN 10
    WHEN 'November' THEN 11
    WHEN 'December' THEN 12
  END),
  exam_day

Bằng cách này, bạn có thể sắp xếp các hàng theo thứ tự tăng dần theo ngày. NULL s sẽ được hiển thị đầu tiên. Để thay đổi thứ tự giảm dần, hãy sử dụng DESC từ khóa sau mỗi cột trong ORDER BY mệnh đề. Đây là toàn bộ truy vấn sẽ trông như thế nào:

SELECT *
FROM exam
ORDER BY
  exam_year DESC,
  (CASE exam_month
    WHEN 'January' THEN 1
    WHEN 'February' THEN 2
    WHEN 'March' THEN 3
    WHEN 'April' THEN 4
    WHEN 'May' THEN 5
    WHEN 'June' THEN 6
    WHEN 'July' THEN 7
    WHEN 'August' THEN 8
    WHEN 'September' THEN 9
    WHEN 'October' THEN 10
    WHEN 'November' THEN 11
    WHEN 'December' THEN 12
  END) DESC,
  exam_day DESC;

Lưu ý rằng khi sắp xếp theo thứ tự giảm dần trong SQLite, NULL s được hiển thị sau cùng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lưu trữ cấu hình trong android

  2. Cập nhật với tham số bằng thư viện liên tục của phòng

  3. Cách tính toán sự khác biệt giữa hai dấu thời gian trong SQLite

  4. Cách hoạt động của SQLite Trim ()

  5. Tìm nạp dữ liệu từ sql databse trong flashing datewise?