2017-10-18 56 views
-1

我需要列出給定(處方)開始日期和結束日期之間的所有日期 - (作爲更大查詢的一部分)。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; 
+0

的可能的複製[如何獲得MySQL中選擇查詢兩個日期之間的日期列表](https://stackoverflow.com/questions/9295616/how-to-get-list-of-dates-between -two-dates-in-mysql-select-query) – GurV

+0

謝謝你指點我的鏈接。我在看。除此之外,是否可以使用變量與上述查詢具有相同的結果? –

+0

仍在掙扎?請參閱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

回答

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); 
相關問題