Firebirdにクエリを実行して、先月の1日目から最終日(月によって30または31)のデータを取得しようとしています。以下のコードを使用すると、日付が現在からシフトされます。たとえば、2017年11月14日から2017年12月13日までです。
コード:
WHERE DATE >= DATEADD(MONTH,-1, CURRENT_TIMESTAMP(2)) AND DATE<= 'TODAY'
必要な出力は2017年11月1日から2017年11月30日です
それを行う正しい方法は何ですか?
私はFirebirdを使用していませんが、PostgreSQLをかなり広範囲に使用しており、これでうまくいくと思います。
WHERE
DATE BETWEEN dateadd(month, -1, CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE) + 1)
AND CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE)
説明 CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE) + 1
は今月の最初に戻りdateadd
、-1か月で前月に戻る必要があります。次に、CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE)
2017年12月13日、つまり13日の間であれば、11月の最終日になるはずです。私の指を交差させます。幸運を。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加