最終日以降のすべてのレコードが必要ですか?このクエリでtsqlを使用して前日のレコードを取得する方法は?
こんにちは
Select * from table1 where tabledate > getdate() -1
、私は正確な結果を得るために、正確に真夜中の後で実行する必要があります。私は昼間にそれを実行し、すべての前日のレコードを取得する必要があります。 SQL Server 2005では
最終日以降のすべてのレコードが必要ですか?このクエリでtsqlを使用して前日のレコードを取得する方法は?
こんにちは
Select * from table1 where tabledate > getdate() -1
、私は正確な結果を得るために、正確に真夜中の後で実行する必要があります。私は昼間にそれを実行し、すべての前日のレコードを取得する必要があります。 SQL Server 2005では
が、これは一般的にこれまでの日時を変換するための最速の方法です:あなたのケースでは
DATEADD(day, DATEDIFF(day, 0, yourDate), 0)
、それが一度だけ行われるので、どのように本当に重要あまりないんです。しかし、それは次のクエリを提供します。
Select
*
from
table1
where
tabledate >= DATEADD(day, DATEDIFF(day, 0, getDate()) - 1, 0)
AND tabledate < DATEADD(day, DATEDIFF(day, 0, getDate()), 0)
このページを確認してください。これは、日付を計算するための素晴らしいリソースです。
別の方法は、単独でDATEDIFF
を使用することである:日の
SELECT * FROM table1
WHERE DATEDIFF(DAY, tabledate, GETDATE()) = 1
1のDATEDIFFは、前日に任意の時間をカバーします。
DECLARE @d SMALLDATETIME;
SET @d = DATEDIFF(DAY, 0, GETDATE());
SELECT <cols> FROM dbo.table1
WHERE tabledate >= DATEADD(DAY, -1, d)
AND tabledate < @d;
これを試してみてください:
your_field = cast(dateadd(D,-1,getdate()) as DATE)
([前日からすべての行を選択するためのSQL文]の可能性のある重複https://stackoverflow.com/questions/1503298/sql-statement-to-select -all-rows-from-day-day) –