【问题标题】:Temporary Date Range Table MySQL [duplicate]临时日期范围表 MySQL [重复]
【发布时间】:2021-09-12 02:25:48
【问题描述】:

第一次海报长期读者。我想知道是否有人知道如何创建一个生成日期列表的临时表。基本上我需要这张表是为了让我可以在记录中的其他两个日期之间的每个日期添加 1。我一直在 mySQL 中遇到错误,所以如果您发现错误,我希望有人能纠正我。

set @start_date = ‘2014-07-29’;
set @end_date = ‘2016-07-29’;

CREATE TEMPORARY TABLE Dates (
d DATE,
PRIMARY KEY (d))

WHILE (@start_date < @end_date)
BEGIN 
INSERT INTO Dates (d) VALUES (@start_date)
SELECT @start_date = DATEADD(DAY, 1, @start_date)

【问题讨论】:

    标签: mysql


    【解决方案1】:

    SQL在过程或函数之外没有循环,语法不是Mysql语法

    CREATE ProCEDURE mysatetable()
    BEGIN
    set @start_date = '2014-07-29';
    set @end_date = '2016-07-29';
    
    CREATE TEMPORARY TABLE Dates (
    d DATE,
    PRIMARY KEY (d));
    
    WHILE (@start_date < @end_date) DO
    INSERT INTO Dates (d) VALUES (@start_date);
    SET @start_date :=  DATE_ADD(@start_date,INTERVAL 1 day);
    END WHILE;
    END
    
    CALL mysatetable()
    
    SELECT * FROM Dates
    
    | d | | :--------- | | 2014-07-29 | | 2014-07-30 | ... | 2016-07-27 | | 2016-07-28 |

    db小提琴here

    【讨论】:

      猜你喜欢
      • 2013-04-02
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多