0

SQL DATEADD()関数を使用して、この営業日のレコードを検索するにはどうすればよいですか?例えば:

SELECT * FROM records r
WHERE r.creationTime <= GETDATE()
  AND r.creationTime >= DATEADD(dd, -1 * hoursFromStartOfThisDay, GETDATE())

ここで、「hoursFromStartOfThisDay」はまさにそれが言っていることです。

注:営業日について話しているので、月曜日から金曜日の午前9時から午後5時までです。

みんなありがとう!

編集:私はまた、週/月の初め、そしておそらく時間にもこれに解決策を適用しようとしています。

編集:したがって、レコードが2011/07/18 08:55:00に作成され、別のレコードが2011/07/18 09:05:00に作成された場合、最初のレコードではなく、2番目のレコードがクエリによって取得されるようにします。 。ただし、現在のGETDATE()が2011年7月18日09:15:00の場合、注意が必要です。

追加してみAND r.creationTime >= '9am'ませんか?

4

1 に答える 1

1

hoursFromStartOfThisDay本当に変数が必要ですか?1日が9から5までの静的な場合は、次の静的な範囲だけを使用できます。

-- cache current date to avoid multiple calls
DECLARE @startOfADay INT
DECLARE @dayLength INT
DECLARE @currentDate DATETIME
SET @currentDate = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
SET @startOfADay = 9
SET @dayLength = 8

SELECT 
   ...
FROM
   ...
WHERE ...
BETWEEN 
      DATEADD(hh, @startOfADay, @currentDate) 
      AND 
      DATEADD(hh, @startOfADay + @dayLength, @currentDate)
于 2011-07-19T09:05:08.550 に答える