3

わかりました、ビジュアル スタジオ 2008 からクエリ ビルダーを実行しています。クエリの結果を時間でフィルター処理しようとしています。つまり、昨日の開始から昨日の正午までのすべてをプルしたいということです。私は昨日、タイムスタンプ mm/dd/yyyy hh:mm:ss を取得する GETDATE()-1 を使用していますが、現在の時刻を取得します。タイムスタンプを追加して時刻自体を削除したので、その日の始まりから実行できるようになりました。

convert(varchar(10), getdate()-1, 120)

だから私は範囲を見つけるために between を使用しています.

ここではdatetimeがデータ型であることを理解しているので、日付部分を使用して時間/分/秒を減算しようとしましたが、datepart()はintのみを返し、時間には影響しません。

考え?これを正午に切るにはどうすればいいですか

4

5 に答える 5

1
DECLARE
    @Min DATETIME
  , @Max DATETIME

SELECT
    @Min = DATEADD(DAY, -1, CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME))
  , @Max = DATEADD(HOUR, 12, CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME))

SELECT *
FROM <Table> x
WHERE x.[Date] BETWEEN @Min AND @Max
于 2013-10-18T17:33:38.757 に答える
1
between DateAdd(day, -1, cast(getdate() as date)) and DateAdd(hour, -12, cast(getdate() as date))

編集:コメントで述べたように、日付で時間を使用することはできません。したがって、日時にキャストする必要があります。

between DateAdd(day, -1, cast(getdate() as date)) and DateAdd(hour, -12, cast(cast(getdate() as date) as datetime))
于 2013-10-18T17:07:23.920 に答える
1

過去 30 分間の結果を取得したい場合は、これを使用する必要があります。にも変更MINUTEできHOURます。

--Get now, hour and second included    
DECLARE @NOW DATETIME = GETDATE() 

--Get 30 mins from now
DECLARE @TranDate DATETIME 
SET @TranDate = CONVERT(DATETIME, CONVERT(DATETIME, DATEADD(MINUTE,-30,@NOW))) 

その後、以下のコードを where ステートメントに追加します。

AND TK.TransactionDate >= @TranDate
于 2015-04-15T09:06:57.257 に答える