Untuk mendapatkan senarai tarikh antara dua tarikh tertentu, pertimbangkan untuk menggunakan prosedur tersimpan seperti make_intervals
untuk mencipta jadual sementara time_intervals
yang diisi dengan selang masa yang diperlukan. Anda kemudian boleh menyertai jadual data dengan jadual time_intervals
untuk mendapatkan output yang diingini.
make_intervals
Prosedur Tersimpan (MySQL)<code class="language-sql">CREATE PROCEDURE make_intervals( startdate timestamp, enddate timestamp, intval integer, unitval varchar(10) ) BEGIN -- 初始化局部变量 declare thisDate timestamp; declare nextDate timestamp; set thisDate = startdate; -- 删除并创建用于区间的临时表 drop temporary table if exists time_intervals; create temporary table if not exists time_intervals( interval_start timestamp, interval_end timestamp ); -- 循环以递增并将区间插入到临时表中 repeat -- 根据单位和区间计算下一个区间日期 select case unitval when 'MICROSECOND' then timestampadd(MICROSECOND, intval, thisDate) when 'SECOND' then timestampadd(SECOND, intval, thisDate) when 'MINUTE' then timestampadd(MINUTE, intval, thisDate) when 'HOUR' then timestampadd(HOUR, intval, thisDate) when 'DAY' then timestampadd(DAY, intval, thisDate) when 'WEEK' then timestampadd(WEEK, intval, thisDate) when 'MONTH' then timestampadd(MONTH, intval, thisDate) when 'QUARTER' then timestampadd(QUARTER, intval, thisDate) when 'YEAR' then timestampadd(YEAR, intval, thisDate) end into nextDate; -- 将当前区间插入到临时表中 insert into time_intervals select thisDate, timestampadd(MICROSECOND, -1, nextDate); set thisDate = nextDate; -- 继续直到当前日期达到或超过结束日期 until thisDate >= enddate end repeat; END;</code>
Sebagai contoh, untuk membuat senarai tarikh antara 1 Januari 2009 dan 13 Januari 2009, anda akan memanggil make_intervals
prosedur tersimpan seperti berikut:
<code class="language-sql">call make_intervals('2009-01-01 00:00:00', '2009-01-13 00:00:00', 1, 'DAY');</code>
Ini akan mengisi jadual time_intervals
dengan selang yang mewakili setiap hari dalam julat tarikh yang ditentukan. Anda kemudiannya boleh menyertai jadual data dengan jadual time_intervals
untuk meringkaskan data berdasarkan selang ini.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Senarai Tarikh Antara Dua Tarikh dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!