MySQL - 使用会话变量列出两个给定日期之间的所有日期

时间:2017-10-18 06:28:46

标签: mysql date variables inner-join

我需要列出给定(处方)开始日期和结束日期之间的所有日期 - (作为更大查询的一部分)。

Table name: patientprescription
Start date field: prescriptionstartdate
End date field: prescriptionenddate

我试图使用会话变量。但我发现很难在变量中设置初始值。第一次执行不会导致任何值,但后续执行会给我正确的结果(因为第一次执行会设置变量)。

为了简化我的需要,以下是我的查询要点:

SELECT
    @gg := DATE_ADD ( @gg, INTERVAL 1 DAY ) AS rxDate
FROM patientprescription AS rx
    JOIN ( SELECT @gg := @hh FROM t1 ) AS v1 ON @hh := rx.prescriptionstartdate
WHERE
    rx.id = 8
    AND @gg <= rx.prescriptionenddate;

t1是一些包含一些记录的表。

执行后重置变量:

SELECT @gg := NULL, @hh := NULL;

1 个答案:

答案 0 :(得分:0)

我设法用变量来获取它。

SELECT
    @gg := DATE( DATE_ADD (rx.prescriptionstartdate, INTERVAL @hh DAY) ) rxDateNext,
    @hh := @hh + 1 AS adderStmt
FROM patientprescription rx
    JOIN (SELECT @hh := 0 FROM t1) AS v1
WHERE 
    rx.id = 8
    AND @hh <= DATEDIFF(rx.prescriptionenddate, rx.prescriptionstartdate);