2017-09-06 4 views
0

私は昨日一時間に起こったすべてのトランザクションの数を引き上げようとしています。私は今日の取引を望んでいません。しかし、私は条件のコードを取得するように見えることはできません。昨日と今日の間にSQL Server 2014でトランザクションを取得する方法は?

私のコード今のところ:私は全体の障害のある行をコメントアウトした場合

SELECT CAST(TransDT as DATE) as 'TransDate' 
     ,CAST(DATEPART(Hour, TransDT) as varchar) + ':00' as 'Hour' 
     ,LaneID 
     ,Direction 
     ,COUNT(*) as 'Ct' 

FROM Traffic_analysis 

WHERE TransDT >= DATEADD (DAY, -1 , SYSDATETIME()) 
    AND TransDT < CAST(DATEPART(DAY, SYSDATETIME()) as int) --This is the faulty line. 

GROUP BY CAST(TransDT as DATE), DATEPART(Hour, TransDT), LaneID, Direction 
ORDER BY CAST(TransDT as DATE) ASC 

、私も昨日と今日の結果を取得します。私は昨日の結果しか必要ない。

私がしようとしているのは、1時間ごと、1車線ごと、1方向あたりのトラフィックを示すグラフでレポートを表示することです。すべてのNBトラフィックを1つの列に、すべてのSBトラフィックを別の列に入れる方が良いでしょう。おそらくUNIONに参加するのでしょうか?

答えて

1

は、あなたはこれを試してみましたか?

WHERE cast(TransDT as date) > DATEADD (DAY, -2 , cast(SYSDATETIME() as date)) 
    AND cast(TransDT as date) <= DATEADD (DAY, -1 , cast(SYSDATETIME() as date)) 

実は、これは私が

WHERE cast(TransDT as date) = DATEADD (DAY, -1 , cast(SYSDATETIME() as date)) 
+0

私はTransDT = DATEADD(DAY、-1、日付としてのキャスト(SYSDATETIME())のみを実行すると結果は得られません。 – user1777929

+0

@ user1777929私の編集を参照してください。しかし、このアプローチでは、TransDTのインデックスを使用しません – Horaciux

1

私はあなたの質問を理解していれば、次の操作を行うことができます。

Where TransDT >= Convert(Date, DateAdd(Day, -1, GetDate()) 
And  TransDT < Convert(Date, GetDate()) 
+0

これは働いていた:

はそのような何かを試してみてください。どうもありがとう。 – user1777929

0

TransDTが日付だと思うenougthですが、あなたはINTとの比較します。

TransDT = CAST(SYSDATETIME() AS DATE)