Um eine Liste der Daten zwischen zwei bestimmten Daten zu erhalten, sollten Sie eine gespeicherte Prozedur wie make_intervals
verwenden, um eine temporäre Tabelle time_intervals
zu erstellen, die mit den erforderlichen Intervallen gefüllt ist. Anschließend können Sie die Datentabelle mit der Tabelle time_intervals
verknüpfen, um die gewünschte Ausgabe zu erhalten.
make_intervals
Gespeicherte Prozedur (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>
Um beispielsweise eine Liste mit Daten zwischen dem 1. Januar 2009 und dem 13. Januar 2009 zu erstellen, würden Sie die gespeicherte Prozedur make_intervals
wie folgt aufrufen:
<code class="language-sql">call make_intervals('2009-01-01 00:00:00', '2009-01-13 00:00:00', 1, 'DAY');</code>
Dadurch wird die Tabelle time_intervals
mit Intervallen gefüllt, die jeden Tag im angegebenen Datumsbereich darstellen. Anschließend können Sie die Datentabelle mit der Tabelle time_intervals
verknüpfen, um die Daten basierend auf diesen Intervallen zusammenzufassen.
Das obige ist der detaillierte Inhalt vonWie erstelle ich in MySQL eine Liste von Daten zwischen zwei Daten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!