GETDATE()
SQL Serverの関数を使用して、クエリが実行される日のちょうど1年前の日付を計算するにはどうすればよいですか?この値をクエリで使用したいと思います。
例:
Select LTRating, RHDate
from Accounts and If LTRating ='D' then RHDate = CURRENTDATE()-365
値が「D」で、日付がちょうど1年前であるすべてのLTRating
列値を取得したいと思います。LTRating
GETDATE()
SQL Serverの関数を使用して、クエリが実行される日のちょうど1年前の日付を計算するにはどうすればよいですか?この値をクエリで使用したいと思います。
例:
Select LTRating, RHDate
from Accounts and If LTRating ='D' then RHDate = CURRENTDATE()-365
値が「D」で、日付がちょうど1年前であるすべてのLTRating
列値を取得したいと思います。LTRating
DATEADDを使用して、正確に 1 年前の日付にアクセスできます。
dateadd(yy, -1, getdate())
例えば
select
LTRating
, case when LTRating = 'D' then dateadd(yy, -1, getdate()) else RHDate end
from Accounts
Select LTRating, RHDate
from Accounts
where LTRating <> 'D'
OR (LTRating ='D' and RHDate = DATEADD(year, -1, GETDATE()))
または datediff 関数を使用します。
Select ...
from table
where datediff(Day, RHDate, getdate()) = 365
select [LTRating], [RHDate] from [Accounts]
where [LTRating] = 'D' AND [RHDate] >= DATEADD(year, -1, GETDATE())
現在の日付の年に-1を追加すると、基本的にdateminusがないため、関数dateaddが逆になります:)
次のステートメントは戻ります
LTRating
「D」以外のすべて。とLTRating
値が「D」で、RHDate
ちょうど1年です。またLTRating
「D」でありRHDate
、1 年以上経過した値。またLTRating
「D」で、RHDate
1年若い値。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<
演算子を使用して行われます。
select LTRating, RHDate
from Accounts
where datediff (yy, RHDate, getdate()) = 1
関数を使用datediff
すると、月と年の差を取得できます
select * from yourtable where RHDate = DATEADD(yy,-1,getdate())