Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Memesan Berdasarkan Tanggal di MySQL

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 di MySQL, 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 ketiga dan Health keempat, atau Health ketiga dan Science keempat).

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

Anda ingin mengurutkan baris menurut tanggal ujian.

Solusi:

SELECT *
FROM exam
ORDER BY STR_TO_DATE(CONCAT(exam_year, ' ', exam_month, ' ', exam_day), '%Y %M %d');

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

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 menurut tanggal, buat nilai tanggal dari tahun, bulan, dan nilai hari. Untuk melakukannya, gunakan fungsi STR_TO_DATE(). Jika Anda memiliki tanggal yang disimpan sebagai string di 'Year Month Day ', Anda dapat memasukkannya ke tanggal menggunakan STR_TO_DATE(date_string, '%Y %M %d') . Tapi pertama-tama, Anda perlu membuat string menggunakan fungsi CONCAT():

CONCAT(exam_year, ' ', exam_month, ' ', exam_day)

CONCAT() fungsi menggabungkan semua argumen menjadi satu string. Anda tidak perlu memasukkan angka ke string. Karena Anda ingin mendapatkan string di 'Year Month Day ', argumennya adalah exam_year , exam_month , exam_day , dan spasi di antaranya.

Kemudian, Anda perlu mengubah string ini menjadi tanggal menggunakan STR_TO_DATE(date_string, '%Y %M %d') fungsi. Argumen kedua dari fungsi ini adalah format tanggal. %Y singkatan dari tahun, %M singkatan dari bulan (nama lengkapnya, bukan angka), dan %d singkatan dari hari.

STR_TO_DATE(CONCAT(exam_year, ' ', exam_month, ' ', exam_day), '%Y %M %d')

Gunakan dengan ORDER BY klausa untuk mengurutkan baris dalam urutan menaik berdasarkan tanggal. Jika Anda ingin melihat baris dalam urutan menurun, cukup tambahkan DESC kata kunci, seperti ini:

SELECT *
FROM exam
ORDER BY STR_TO_DATE(CONCAT(exam_year, ' ', exam_month, ' ', exam_day), '%Y %M %d') DESC;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menduplikasi Database menggunakan phpMyAdmin

  2. JSON_SET() vs JSON_INSERT() vs JSON_REPLACE() di MySQL:Apa Bedanya?

  3. Hosting Web Gratis dengan Dukungan PHP

  4. Kekurangan mysql_real_escape_string?

  5. Cara memperbaiki database dan tabel MySQL