MySQL-使用会话变量列出两个给定日期之间的所有日期
我需要列出给定处方开始日期和结束日期之间的所有日期,作为更大查询的一部分MySQL-使用会话变量列出两个给定日期之间的所有日期,mysql,date,variables,inner-join,Mysql,Date,Variables,Inner Join,我需要列出给定处方开始日期和结束日期之间的所有日期,作为更大查询的一部分 Table name: patientprescription Start date field: prescriptionstartdate End date field: prescriptionenddate 我正在尝试使用会话变量。但是我发现很难在变量中设置初始值。第一次执行不会产生任何值,但后续执行会给出正确的结果,因为第一次执行会设置变量 为了简化我的需求,以下是我查询的要点: SELECT @gg
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;
我设法用变量得到了这个
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);
可能重复的感谢你给我指的链接。我正在看。除此之外,使用变量的上述查询是否有可能得到相同的结果?仍然很困难?我不明白为什么我的问题被否决了?我想要一个使用变量的解决方案,我觉得这个变量比在上面的文章中建议的遍历一个大的数字列表更有效。我认为这不是一个重复的问题。
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);