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

hasilkan hari dari rentang tanggal

Solusi ini menggunakan tanpa loop, prosedur, atau tabel sementara . Subquery menghasilkan tanggal untuk 10.000 hari terakhir, dan dapat diperpanjang untuk maju atau mundur sejauh yang Anda inginkan.

select a.Date 
from (
    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a) ) DAY as Date
    from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as d
) a
where a.Date between '2010-01-20' and '2010-01-24' 

Keluaran:

Date
----------
2010-01-24
2010-01-23
2010-01-22
2010-01-21
2010-01-20

Catatan tentang Kinerja

Mengujinya di sini , kinerjanya sangat bagus:kueri di atas membutuhkan waktu 0,0009 detik.

Jika kita memperluas subquery untuk menghasilkan kira-kira. 100.000 angka (dan dengan demikian tanggal sekitar 274 tahun), itu berjalan dalam 0,0458 detik.

Kebetulan, ini adalah teknik yang sangat portabel yang bekerja dengan sebagian besar database dengan sedikit penyesuaian.

Contoh SQL Fiddle mengembalikan 1.000 hari



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengelola Database MySQL di cPanel dengan PHPMyAdmin

  2. Cara Mengubah Format Datetime di MySQL

  3. MySQL MariaDB – Kueri Menggunakan Tabel Temp

  4. Pencarian Teks Lengkap di MySQL:Yang Baik, yang Buruk dan yang Jelek

  5. Kesalahan MySQL 1264:nilai di luar rentang untuk kolom