MySQL - 使用会话变量列出两个给定日期之间的所有日期
问题描述:
我需要列出给定(处方)开始日期和结束日期之间的所有日期 - (作为更大查询的一部分)。MySQL - 使用会话变量列出两个给定日期之间的所有日期
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;
答
我设法用变量来得到这个。
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);
的可能的复制[如何获得MySQL中选择查询两个日期之间的日期列表](https://stackoverflow.com/questions/9295616/how-to-get-list-of-dates-between -two-dates-in-mysql-select-query) – GurV
谢谢你指点我的链接。我在看。除此之外,是否可以使用变量与上述查询具有相同的结果? –
仍在挣扎?请参阅https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query – Strawberry