我需要列出给定(处方)开始日期和结束日期之间的所有日期 - (作为更大查询的一部分)。
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;
答案 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);