【发布时间】:2017-03-06 06:30:00
【问题描述】:
我正在尝试获取今天订单日期加上 16 小时之间的记录。
OrderDate 数据类型为datetime
我在该期间的数据库中有记录,但未使用以下查询显示。
例如,我有以下记录。
2017-03-05 10:20:30.000
2017-03-06 10:20:30.000
查询应该返回第二条记录。
有解决这个问题的建议吗?
SQL 查询
SELECT
dbo.Areas.AreaName,
dbo.Brands.BrandName,
dbo.Orders.OrderID,
dbo.Orders.OrderStatus,
dbo.Customers.CustomerName,
dbo.Customers.CustomerID,
dbo.Customers.Phone,
dbo.Customers.Mobile,
dbo.Orders.OrderDate,
dbo.Outlets.OutletName,
dbo.Users.FirstName,
dbo.Users.LastName,
dbo.Sources.SourceName,
SUM((OrderDetails.Quantity * OrderDetails.UnitPrice)) + Orders.DeliveryCharge - ((SUM((OrderDetails.Quantity * OrderDetails.UnitPrice)) + Orders.DeliveryCharge) * Orders.Discount / 100) AS Amount,
ReceivedOrders.ReceivingDate
FROM dbo.Orders
INNER JOIN dbo.Customers
ON dbo.Orders.CustomerID = dbo.Customers.CustomerID
INNER JOIN dbo.Outlets
ON dbo.Orders.OutletID = dbo.Outlets.OutletID
INNER JOIN dbo.Users
ON dbo.Orders.UserID = dbo.Users.UserID
INNER JOIN dbo.Sources
ON dbo.Orders.SourceID = dbo.Sources.SourceID
INNER JOIN dbo.OrderDetails
ON dbo.OrderDetails.OrderID = dbo.Orders.OrderID
INNER JOIN dbo.Brands
ON dbo.Brands.BrandID = dbo.Outlets.BrandID
INNER JOIN dbo.Areas
ON dbo.Areas.AreaID = dbo.Customers.AreaID
LEFT JOIN dbo.ReceivedOrders
ON dbo.ReceivedOrders.OrderID = dbo.Orders.OrderID
WHERE BETWEEN OrderDate AND DATEADD(HOUR, 16, OrderDate) and OrderDate=GETDATE()
GROUP BY dbo.Orders.OrderID,
dbo.Orders.OrderStatus,
dbo.Customers.CustomerName,
dbo.Customers.CustomerID,
dbo.Customers.Phone,
dbo.Customers.Mobile,
dbo.Orders.OrderDate,
dbo.Outlets.OutletName,
dbo.Users.FirstName,
dbo.Users.LastName,
dbo.Sources.SourceName,
dbo.Orders.DeliveryCharge,
Orders.Discount,
dbo.Brands.BrandName,
dbo.Areas.AreaName,
ReceivedOrders.ReceivingDate
ORDER BY dbo.Orders.OrderID
【问题讨论】:
-
请显示示例数据。您的查询可能还有其他问题。
-
请记住,
GETDATE()是当前日期和时间。您是否打算仅显示从执行查询的“当前”时间开始的记录?还是您希望它包括一整天? -
记录应该在订单日期加上 16 小时之间。并且订单日期应等于今天日期
-
我在 OrderDate AND DATEADD(HOUR, 16, OrderDate) 和 OrderDate=GETDATE() 之间尝试过类似的事情
-
@Ayman 你说的是
Dates,但你要加HOURS,我再问我的问题,你说order date should be equal to today date是在哪里考虑时间?
标签: sql sql-server