0

ヒット テーブルから最終日の結果を取得したい。最終日とは、2013 年 10 月 28 日の午前 7 時にクエリを実行すると、 00h:27/10/2013 と 24h:27/10/2013 の間の結果が返されることを意味します。

ここに私のクエリがあります:

SELECT  COUNT(ID) FROM [tblHit] AS V WHERE  HitDate between
DATEADD(day, -1, convert(date, GETDATE()))  and  convert(date, GETDATE())  

このクエリは結果を取得しますか?

私を悩ませている唯一のことは、

convert(date, GETDATE())

時間も含まれ、結果が間違っています。

4

3 に答える 3

2
SELECT ...
FROM ...
WHERE HitDate >= DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE())-1, 0) -- Start of the previous day
AND HitDate < DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) -- Start of the current day
于 2013-10-28T21:11:15.163 に答える
2
Declare @Yesterday date = DateAdd(day, -1, Getdate())

SELECT  COUNT(ID) FROM [tblHit] AS V 
WHERE  HitDate >= @Yesterday and HitDate < DateAdd(day, 1, @Yesterday)
于 2013-10-28T21:14:29.773 に答える
-1

「最後の日」の意味がわからない

昨日のレコードを選択したい場合は、次のことができます

 Select *
 From tblHit
 Where cast(hit_date as date) = dateadd(d, -1, cast(getdate() as date))

最新の日の記録が必要な場合は、次を使用できますDENSE_RANK()

Select *
From (
    Select *,  dense_rank() over (order by cast(hit_date as date) desc) dr
    From tblHit
) t
Where dr=1

最新の 2 番目の日のレコードが必要な場合はDENSE_RANK()、条件を少し変更するだけです。

Select *
From (
    Select *,  dense_rank() over (order by cast(hit_date as date) desc) dr
    From tblHit
) t
Where dr=2
于 2013-10-28T21:14:45.960 に答える