2017-03-17 6 views
1

私は、MS SQL Serverで実行されている次のSQL文を持っている:WHERE句に日付範囲を組み込む方法は?

SELECT 
    COUNT(*) 
FROM 
    [dbo].[QueueAuditTrail] with(nolock) 
WHERE 
    (queueenddatetime >= '2017-03-17 14:00:00.000' 
    AND queueenddatetime < '2017-03-17 16:36:00.000') 
    AND queuetype = 7 
GROUP BY 
    queuetype 
HAVING 
    COUNT(queuetype) < 100000; 

queueenddatetime列はUTCフォーマットされたタイムスタンプです。このSQL文は、指定された時間範囲で機能します。しかし、私はWHEREステートメントを、 "現在のUTC時間から20分以上の時間"と "現在のUTC時間未満"( "YYYY-MM-DD hh:mm" :ss.xxx ")形式です。これはどうすればできますか?

+1

を使用して

? MySQL、Oracle ...? –

+0

私は、このクエリで '' group by'''と '' '' ''句の必要性を理解していません。 – Anand

+0

[悪い習慣を蹴る - あらゆる場所にNOLOCKを置く](http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/) - これはどこにでも使うことをお勧めしません。 –

答えて

2

これは私にとってsql-serverのようです。あなたはどのようなDBMSを使用しているdateadd()sysutcdatetime()

select count(*) 
from [dbo].[QueueAuditTrail] with(nolock) 
where queueenddatetime >= dateadd(minute,-20,sysutcdatetime()) 
    and queueenddatetime < sysutcdatetime() 
    and queuetype = 7 
group by queuetype 
having count(queuetype) < 100000 
; 
+0

これらの2つのパラメータは、私が必要としていたものです。あなたのご意見ありがとうございます! –

+0

@ B.Juice助けて嬉しいです! – SqlZim