0

24 時間以内にすべてのレコードを選択する SQL クエリがありますが、(レコードのタイムスタンプに基づいて) 1 か月以内にすべてのレコードを選択するように更新する必要があります。たとえば、2 月のレコードを選択した場合、月の初めから終わりまでのすべてのレコードが返されます。

私が毎日のクエリに持っているコードは次のとおりです。

SELECT  Snapshot.xId,  MAX(Snapshot.TimeStamp) AS Timestamp_Actual, 
                dateadd(dd, datediff(dd,0, MAX(Snapshot.TimeStamp)), 0) AS TimestampRange_Start,
                dateadd(MI, 1439, dateadd(dd, datediff(dd,0, MAX(Snapshot.TimeStamp)), 0)) AS TimestampRange_End
                FROM Snapshot
                GROUP BY Snapshot.xId

私がこれまでに持っているものは次のとおりです。

SELECT  Snapshot.xId,  MAX(Snapshot.TimeStamp) AS Timestamp_Actual, 
                dateadd(mm, datediff(mm,0, MAX(Snapshot.TimeStamp)), 0) AS TimestampRange_Start,
                dateadd(dd, 0, dateadd(mm, datediff(mm,0, MAX(Snapshot.TimeStamp)), 0)) AS TimestampRange_End
                FROM Snapshot
                GROUP BY Snapshot.xId

上記のステートメントから、標準の WHERE 句を含めて、TimestampRange_Start と TimestampRange_End の値をチェックし、Timestamp_Actual がそれらの間にあるかどうかを確認できます。

4

1 に答える 1

0
SELECT Snapshot.xId, MAX(Snapshot.TimeStamp) AS Timestamp_Actual
  FROM Snapshot
 GROUP BY Snapshot.xId
HAVING MAX(Snapshot.TimeStamp) >= dateadd(mm, datediff(mm, 0, getdate()), 0)
   AND MAX(Snapshot.TimeStamp) <  dateadd(mm, 1+datediff(mm, 0, getdate()), 0)
于 2012-09-24T00:57:21.000 に答える