OrderDate
( datetime
) が 12 時間前の SQL Server データベースからレコードを取得しようとしています。理想的には、私は 1 時間ずっとやりたいと思っています..例えば..
今クエリを実行すると、21.38 (私の時間) に、クエリはdatetime
9.00 から 10.00 のレコードを取得します。実際の日付自体は気にしません。12 時間前の注文だけです。このクエリは毎日実行されます。次回は 22 時 38 分に実行され、10 時から 11 時まで注文が取り込まれます。
これは私が試したことです:
SELECT TOP (100) PERCENT
dbo.[Order].OrderID,
dbo.Customer.Forename,
dbo.Customer.Surname,
dbo.Customer.Email,
dbo.[Order].OrderDate,
dbo.[Order].OrderStatusID,
dbo.[Order].WebsiteID,
dbo.Addresses.CountryID
FROM dbo.[Order]
INNER JOIN dbo.Customer
ON dbo.[Order].CustomerID = dbo.Customer.CustomerID
INNER JOIN dbo.Addresses
ON dbo.[Order].BillingAddressID = dbo.Addresses.AddressID
AND dbo.[Order].DeliveryAddressID = dbo.Addresses.AddressID
AND dbo.Customer.CustomerID = dbo.Addresses.CustomerID
WHERE (dbo.[Order].WebsiteID IN (1, 2, 8, 12))
AND (dbo.[Order].OrderStatusID = 1)
AND (dbo.[Order].OrderDate >= DATEADD(hour, - 12, GETDATE()))
AND (dbo.[Order].OrderDate <= DATEADD(hour, - 11, GETDATE()))
アップデート:
これは私が現在試している正しいクエリです
SELECT TOP (100) PERCENT dbo.[Order].OrderID, dbo.Customer.Forename, dbo.Customer.Surname, dbo.Customer.Email, dbo.[Order].OrderDate, dbo.[Order].OrderStatusID, dbo.[Order].WebsiteID,
dbo.Addresses.CountryID
FROM dbo.[Order] INNER JOIN
dbo.Customer ON dbo.[Order].CustomerID = dbo.Customer.CustomerID LEFT OUTER JOIN
dbo.Addresses ON dbo.[Order].DeliveryAddressID = dbo.Addresses.AddressID AND dbo.Customer.CustomerID = dbo.Addresses.CustomerID
WHERE (dbo.[Order].WebsiteID IN (1, 2, 8, 12)) AND (dbo.[Order].OrderStatusID = 1) AND (dbo.[Order].OrderDate >= DATEADD(Hour, DATEDIFF(Hour, 0, GETDATE()) - 12, 0)) AND
(dbo.[Order].OrderDate < DATEADD(Hour, DATEDIFF(Hour, 0, GETDATE()) - 11, 0))