SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Cara Memesan berdasarkan Tanggal di SQLite

Masalah:

Anda ingin mengurutkan baris berdasarkan tanggal.

Contoh 1:

exam tabel memiliki dua kolom, subject dan exam_date .

subjek tanggal_ujian
Matematika 2019-12-19
Bahasa Inggris 08-01-2020
Ilmu 05-01-2020
Kesehatan 05-01-2020
Seni NULL

Anda ingin mengurutkan baris berdasarkan exam_date .

Solusi:

SELECT *
FROM exam
ORDER BY exam_date;

Hasilnya terlihat seperti ini (baris diurutkan dalam urutan menaik berdasarkan exam_date ):

Subjek Tanggal Ujian
Seni NULL
Matematika 2019-12-19
Ilmu 05-01-2020
Kesehatan 05-01-2020
Bahasa Inggris 08-01-2020

Diskusi:

Gunakan ORDER BY kata kunci dan nama kolom yang ingin Anda urutkan. Dengan cara ini, Anda akan mengurutkan data dalam urutan menaik menurut kolom ini. Anda juga dapat menggunakan ASC kata kunci untuk memperjelas bahwa urutannya naik (tanggal paling awal ditampilkan terlebih dahulu, tanggal terakhir ditampilkan terakhir, dll.).

SELECT *
FROM exam
ORDER BY exam_date ASC;

Jika Anda ingin melihat tanggal terakhir terlebih dahulu dan tanggal paling awal terakhir, Anda harus mengurutkan dalam urutan menurun. Gunakan DESC kata kunci dalam hal ini.

SELECT *
FROM exam
ORDER BY exam_date DESC;

Perhatikan bahwa dalam SQLite, NULL s ditampilkan pertama kali saat mengurutkan dalam urutan menaik dan terakhir saat mengurutkan dalam urutan menurun. Juga, baris dengan exam_date yang sama ditampilkan dalam urutan acak (Anda mungkin melihat Science kedua dan Health ketiga, atau Health kedua dan Science ketiga).

Contoh 2:

exam tabel memiliki kolom berikut:subject , exam_year , exam_month , dan exam_day . Bulan ditulis dengan nama, bukan angka.

subjek tahun_ujian ujian_bulan hari_ujian
Matematika 2019 Desember 19
Bahasa Inggris 2020 Januari 8
Ilmu 2020 Januari 5
Kesehatan 2020 Januari 5
Seni NULL NULL NULL

Solusi:

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;

Hasilnya terlihat seperti ini (baris diurutkan dalam urutan menaik berdasarkan exam_year , exam_month , dan exam_day ):

subjek tahun_ujian ujian_bulan hari_ujian
Seni NULL NULL NULL
Matematika 2019 Desember 19
Kesehatan 2020 Januari 5
Ilmu 2020 Januari 5
Bahasa Inggris 2020 Januari 8

Diskusi:

Untuk mengurutkan baris menurut tanggal ujian, Anda harus mengurutkan terlebih dahulu berdasarkan tahun, lalu menurut bulan numerik (bukan nama bulan), dan terakhir menurut hari. Anda dapat mengonversi nama bulan menjadi bulan numerik dengan CASE WHEN ayat. Setelah CASE kata kunci, tentukan nama kolom. Kemudian, setelah setiap WHEN, nyatakan nilai dalam kolom ini, gunakan kata kunci THEN, dan tentukan nilai baru yang ingin Anda tetapkan, bukan yang lama. Di sini, kolomnya adalah exam_month , nilai saat ini di kolom ini adalah 'January ', 'February ', …, 'December ', dan nilai barunya adalah bulan numerik 1 , 2 , …, 12 . Setelah Anda selesai mengonversi semua nilai, ingatlah untuk menggunakan END kata kunci untuk menutup CASE WHEN ayat. Lihat:

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

Ini adalah bagaimana Anda mengubah nama bulan menjadi nomor bulan. Anda dapat menggunakannya saat mengurutkan baris berdasarkan tanggal, yaitu tahun, bulan numerik, dan hari.

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

Dengan cara ini, Anda dapat mengurutkan baris dalam urutan menaik berdasarkan tanggal. NULL s akan ditampilkan terlebih dahulu. Untuk mengubah urutan turun, gunakan DESC kata kunci setelah setiap kolom di ORDER BY ayat. Berikut tampilan keseluruhan kueri:

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;

Perhatikan bahwa saat mengurutkan dalam urutan menurun di SQLite, NULL s ditampilkan terakhir.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih beberapa kolom dari dua tabel menggunakan greendao

  2. SQLite Pilih Berbeda

  3. Cara terbaik untuk menyimpan gambar yang berasal dari server di android

  4. Masalah memori SQLite dengan pendekatan tunggal

  5. 3 Cara Mencadangkan Basis Data SQLite