Home > Database > Mysql Tutorial > How to Generate Date Ranges in MySQL Without `generate_series()`?

How to Generate Date Ranges in MySQL Without `generate_series()`?

DDD
Release: 2025-01-14 09:15:53
Original
846 people have browsed it

How to Generate Date Ranges in MySQL Without `generate_series()`?

MySQL's Date Range Generation: A Practical Approach

MySQL lacks a direct equivalent to PostgreSQL's generate_series() function. However, we can cleverly generate date ranges using SQL and variables. This method is particularly useful when you need to create date ranges without a pre-existing calendar table.

Let's illustrate with an example. Imagine a sales table:

date qty
2011-01-01 3
2011-01-01 4
2011-04-01 2
2011-06-01 5

Our goal is to expand this to show daily sales for the entire year 2011:

date qty
2011-01-01 7
2011-01-02 0
2011-01-03 0
2011-04-01 2
...and so on...

Here's how we achieve this:

<code class="language-sql">SELECT 
    DATE_FORMAT(ADDDATE('2011-01-01', @num := @num + 1), '%Y-%m-%d') AS date
FROM 
    any_table, 
    (SELECT @num := -1) AS num
LIMIT 
    365;</code>
Copy after login

This query uses any_table (any existing table will do) as a placeholder to ensure the query runs. The @num variable, initialized to -1, increments with each row, generating consecutive dates starting from '2011-01-01'. LIMIT 365 restricts the output to a non-leap year; use LIMIT 366 for leap years. The DATE_FORMAT function ensures consistent date formatting.

This technique provides a flexible and efficient solution for generating date ranges within MySQL, simplifying date-based queries and analysis.

The above is the detailed content of How to Generate Date Ranges in MySQL Without `generate_series()`?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template