0

私のクエリは

Select * from Orders 
where ordersdate Between '2013-10-10 00:00:00.00' and '2013-10-10 23:59:59.997'

このクエリを毎日実行する必要があり、前日の日付である必要があります。上記の形式で日付を生成する方法は、私が苦労しているものです。

4

4 に答える 4

2
Select * 
from Orders
where ordersdate >= cast(dateadd(d, -1, getdate()) as date)
and ordersdate < cast(getdate() as date)

additonal の代わりに、昨日の日付と今日timeを使用できます。>=<

于 2013-10-11T08:44:44.567 に答える
0
select * 
from orders 
where datediff(d, ordersdate, getdate()) = 1

/編集/ Jason Musgroveのコメントによると、このようなクエリは簡単に記述して理解できますが、行数によっては非常に非効率になる可能性があります.

于 2013-10-11T09:01:14.977 に答える
0
DECLARE @StartDate DATETIME, @EndDate DATETIME

/* set the end date to midnight of the previous day */
SET @EndDate = CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 121), 121) 
/* set the start date to 1 day previously (thereby getting midnight to midnight) */
SET @StartDate = DATEADD(day, -1, @EndDate)

/* you could use between, but orders placed at midnight might be counted twice (on subsequent day reports) */
Select * from Orders where ordersdate Between @StartDate AND @EndDate

/* or you could use >= and < to guarantee that a order placed at midnight will only be counted once */
Select * from Orders where ordersdate >= @StartDate AND ordersdate < @EndDate
于 2013-10-11T09:12:37.077 に答える