40

日時列を 1 つ含むテーブルがあります。過去 6 か月間だけ行を返す必要があります。これは、

where datetime_column > DATEADD(m, -6, current_timestamp)

しかし、月の初日から始まる最新の月を返したい場合、このオプションを拡張するにはどうすればよいですか? たとえば、月の半ばにこの条件を実行する(14/6/2000)と、最新の行は に設定されます14/1/2000が、 として返したいと思い1/1/2000ます。何かアドバイス?

いくつかのサブクエリ (月関数を含む datetime の最大関数) を試しましたが、成功しませんでした。

4

5 に答える 5

13

SQL Server で

where datetime_column > dateadd(m, -6, getdate() - datepart(d, getdate()) + 1)

SQLFiddle デモ

MySQL では

where datetime_column > curdate() - interval (dayofmonth(curdate()) - 1) day - interval 6 month

SQLFiddle デモ

于 2013-10-07T14:56:54.573 に答える
8

これを試してみてください

where datediff(month, datetime_column, getdate()) <= 6

将来の日付を除外または除外するには

where datediff(month, datetime_column, getdate()) between 0 and 6


この部分datediff(month, datetime_column, getdate())は、現在の日付と Datetime_Column の数の月の差を取得し、次のような行を返します。

結果
1
2
3
4
5
6
7
8
9
10

これは、過去 6 か月のデータを取得するための最終条件です。

結果 <= 6

于 2015-10-06T15:56:09.007 に答える