我有一個選擇,我只需要限制兩天的數據。所以今天是2016年8月24日,所以我需要獲得2016年8月24日,2016年8月23日和2016年8月22日的數據。我該怎麼做?我想我應該使用DATEADD函數,或類似的東西。它需要動態地完成。SQL Server:獲取「兩天前」日期
我需要這樣的:
SELECT * FROM TABLE_NAME WHERE
DATE = '2016-08-22'
日期必須每天都進行更新
我有一個選擇,我只需要限制兩天的數據。所以今天是2016年8月24日,所以我需要獲得2016年8月24日,2016年8月23日和2016年8月22日的數據。我該怎麼做?我想我應該使用DATEADD函數,或類似的東西。它需要動態地完成。SQL Server:獲取「兩天前」日期
我需要這樣的:
SELECT * FROM TABLE_NAME WHERE
DATE = '2016-08-22'
日期必須每天都進行更新
SELECT * FROM TABLE_NAME WHERE
cast(DATE as date) >= cast(GETDATE()-2 as date)
或 ──爲限制未來日期
SELECT * FROM TABLE_NAME
WHERE
cast(DATE as date) in (cast(GETDATE()-2 as date),cast(GETDATE()-1 as date), cast(GETDATE() as date))
使用GETDATE()
功能
使用DateAdd,正是
SELECT * FROM TABLE_NAME
WHERE DATE BETWEEN dateadd(d,-2,cast(getDate() as date)) AND cast(getDate() as date)
'dateadd(d,-2,cast(getDate()as date))'這部分應該'投射爲日期',我認爲 –
它將被隱含地鑄造。無論如何,結果將是相同的[日期]列是'日期'類型。演員陣容的主要原因是輪到getdate()。請參閱'select 1 where cast(getDate()as date)= dateadd(d,0,cast(getDate()as date))' – Serg
SELECT * FROM TABLE_NAME WHERE
DATE >=cast(getdate()-2 as date)--so this will be rounded off to midnight and it is sargable
SELECT *
FROM TABLE_NAME
WHERE cast(DATE as date) BETWEEN cast(DATEADD(D, -2, GETDATE()) as date) AND cast(GETDATE() as date)
如果在此表將來的日期,你也許可以使用這個
select * from table_name
where date <= getdate()
and date >= dateadd(day,-2,getdate())
首先,你必須讓今天的日期在絕對通過轉換它漂浮在地板上,然後將其轉換成小日期時間。然後使用dateadd從今天的絕對日期減去2天。
SELECT * FROM
TABLE_NAME
WHERE
DATE >= (SELECT DATEADD(dd,-2,CAST(FLOOR(CAST(GETDATE() as FLOAT)) as SMALLDATETIME)))
你爲什麼使用CAST? – MegoSoft
getdate()返回datetime。所以當比較完成時,它會比較日期和時間。我們只需要比較日期。如果日期列的類型爲'日期',則日期列不需要強制轉換。我認爲它是字符串 –
Akshey,如果表中有未來的日期,您的查詢將返回它,但它不應該 –