Pour obtenir une liste de dates entre deux dates données, pensez à utiliser une procédure stockée comme make_intervals
pour créer une table temporaire time_intervals
remplie avec les intervalles requis. Vous pouvez ensuite joindre la table de données avec la table time_intervals
pour obtenir le résultat souhaité.
make_intervals
Procédure stockée (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>
Par exemple, pour créer une liste de dates entre le 1er janvier 2009 et le 13 janvier 2009, vous appelleriez la procédure stockée make_intervals
comme suit :
<code class="language-sql">call make_intervals('2009-01-01 00:00:00', '2009-01-13 00:00:00', 1, 'DAY');</code>
Cela remplira le tableau time_intervals
avec des intervalles représentant chaque jour dans la plage de dates spécifiée. Vous pouvez ensuite joindre le tableau de données avec le tableau time_intervals
pour résumer les données en fonction de ces intervalles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!