0

GETDATE()SQL Serverの関数を使用して、クエリが実行される日のちょうど1年前の日付を計算するにはどうすればよいですか?この値をクエリで使用したいと思います。

例:

 Select LTRating, RHDate 
 from Accounts and If LTRating ='D' then RHDate = CURRENTDATE()-365

値が「D」で、日付がちょうど1年前であるすべてのLTRating列値を取得したいと思います。LTRating

4

7 に答える 7

2

DATEADDを使用して、正確に 1 年前の日付にアクセスできます。

dateadd(yy, -1, getdate())

例えば

select 
LTRating
, case when LTRating = 'D' then dateadd(yy, -1, getdate()) else RHDate end
from Accounts
于 2012-10-04T09:34:53.500 に答える
0
Select LTRating, RHDate 
from Accounts 
where LTRating <> 'D' 
OR (LTRating ='D' and RHDate = DATEADD(year, -1, GETDATE()))
于 2012-10-04T10:19:39.127 に答える
0

または datediff 関数を使用します。

Select ...
from table
where datediff(Day, RHDate, getdate()) = 365
于 2012-10-04T09:41:24.753 に答える
0
select [LTRating], [RHDate] from [Accounts] 
where [LTRating] = 'D' AND [RHDate] >= DATEADD(year, -1, GETDATE())

現在の日付の年に-1を追加すると、基本的にdateminusがないため、関数dateaddが逆になります:)

于 2012-10-04T09:54:41.853 に答える
0

次のステートメントは戻ります

  • LTRating「D」以外のすべて。と
  • 次のいずれかを選択します。
    • LTRating値が「D」で、RHDateちょうど1年です。また
    • LTRating「D」でありRHDate、1 年以上経過した値。また
    • LTRating「D」で、RHDate1年若い値。
SELECT LTRating, RHDate 
FROM Accounts
WHERE ( LTRating != 'D'

  -- use this for exact comparison (including seconds!)
  OR RHDate = DATEADD(YEAR, -1, GETDATE())

  -- use this for RHDate older than one year
  OR RHDate < DATEADD(YEAR, -1, GETDATE())

  -- use this for RHDate younger than one year
  OR RHDate > DATEADD(YEAR, -1, GETDATE())

);

DATETIME 型と SMALLDATETIME 型には時間コンポーネント (少なくとも秒まで) が含まれていることに注意してください。したがって、ほとんどの場合、日時列の比較は>or<演算子を使用して行われます。

于 2012-10-04T10:00:30.247 に答える
0
select  LTRating, RHDate 
from Accounts 
where datediff (yy, RHDate, getdate()) = 1

関数を使用datediffすると、月と年の差を取得できます

于 2012-10-04T09:44:49.117 に答える
0
select * from yourtable where RHDate = DATEADD(yy,-1,getdate())
于 2012-10-04T09:45:28.240 に答える