0

年と月が整数として別々の列に格納されているテーブルがあります。私が持っている質問は、現在の日付 (つまり、クエリが実行された日付) から過去 12 か月を取得する方法です。したがって、日付が 2013 年 2 月 15 日の場合、2013 年 2 月 15 日から 2012 年 2 月 14 日までのレコードのみを取得し、それ以外の年と月は返しません。

これを行う簡単な方法はありますか?

ありがとう

4

3 に答える 3

1

DATEADD()1 年前の日付を検索するために使用します。

SELECT *
FROM myTable
WHERE DATEADD(year, -1, GETDATE()) >= 
      CONCAT(CAST(year AS varchar), CAST(month AS varchar), CAST(date AS varchar))
于 2013-02-21T20:40:43.480 に答える
0

アイデアを提供するために、次のようなものが役立つかもしれません:

select CONVERT(datetime, CONCAT ( year, month, date ))
from your_table
于 2013-02-21T20:40:00.300 に答える
0

そのデータベースの設計を変更することを強くお勧めします。エドガー・フランク・コッドが言ったように、日付は原子的です。つまり、小さな部分に分けることはできません (またはすべきではありません)。手遅れでない場合は、デザインを変更し、日付を日時形式にすると、日付の取得に関するあらゆる種類の問題が解消されます。日付を簡単に取得するための日付と時刻の関数が何百もあります。

(何でも) From (table) where (table's date column) between current_date() AND Dateadd(yy,-1,current_date()); を選択します。

これは、デザインを変更した場合のクエリのコードになります。それ以外の場合は、次のようにすることができます。

Select (whatever) From (table) where (table.year between (Select MAX(table.year) From table) AND (Select MAX(table.year)-1 From table)) AND table.month = (試して取得実際の月) AND table.day = (実際の日を取得してみてください);

ご覧のとおり、クエリが実行された日と月を把握するのは非常に困難です。年に関しては、最大年が実際の年であると想定しています...これはやり方ではありません。デザインを変更することを強くお勧めします。それが役に立てば幸い。

于 2013-02-21T21:03:00.660 に答える