如何在SQL Server中使用GETDATE()
函數來計算查詢執行前一年的日期?我想在查詢中使用這個值。如何在SQL Server中使用GETDATE()函數來選擇列值?
E.g:
Select LTRating, RHDate
from Accounts and If LTRating ='D' then RHDate = CURRENTDATE()-365
我想檢索所有LTRating
列值,其中LTRating
值是「d」和日期是整整一年前。
如何在SQL Server中使用GETDATE()
函數來計算查詢執行前一年的日期?我想在查詢中使用這個值。如何在SQL Server中使用GETDATE()函數來選擇列值?
E.g:
Select LTRating, RHDate
from Accounts and If LTRating ='D' then RHDate = CURRENTDATE()-365
我想檢索所有LTRating
列值,其中LTRating
值是「d」和日期是整整一年前。
您可以使用DATEADD,準確INE年前從而訪問日期:
dateadd(yy, -1, getdate())
例如
select
LTRating
, case when LTRating = 'D' then dateadd(yy, -1, getdate()) else RHDate end
from Accounts
或者使用DATEDIFF函數:
Select ...
from table
where datediff(Day, RHDate, getdate()) = 365
select LTRating, RHDate
from Accounts
where datediff (yy, RHDate, getdate()) = 1
使用datediff
功能,可以在幾個月甚至幾年
select * from yourtable where RHDate = DATEADD(yy,-1,getdate())
select [LTRating], [RHDate] from [Accounts]
where [LTRating] = 'D' AND [RHDate] >= DATEADD(year, -1, GETDATE())
添加-1到當前的年份獲得差異日期基本上只是反轉函數d ateadd因爲沒有dateminus :)
就是懶得打字。 – Juvil
下面的語句返回
LTRating
是不是 'd';和LTRating
值是「d」和RHDate
是正好一年;或LTRating
值爲'D'且RHDate
爲年齡大於一年; ORLTRating
值爲'D'且RHDate
爲年輕人一年。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類型包括時間分量(人至少到第二),因此,在大多數的情況下,日期時間列的比較完成使用>
或<
運營商。
Select LTRating, RHDate
from Accounts
where LTRating <> 'D'
OR (LTRating ='D' and RHDate = DATEADD(year, -1, GETDATE()))
這是不準確的,閏年有366,而其餘的都是365 – Juvil
真的,我只是想表明另一個功能:) – ulath
那麼你可以只使用'GETDATE() - 365',它有同樣的問題閏年是366 –