2017-10-18 6 views
-1

(処方箋の)開始日と終了日の間のすべての日付をリストアップする必要があります。MySQL - セッション変数を使用して2つの指定された日付間のすべての日付を表示する

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の選択クエリで2つの日付の間の日付のリストを取得する方法](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); 
関連する問題