0
我正在打折以便在特定时间订购时应用折扣。如何选择结束时间为第二天的开始时间和结束时间之间的记录
一切工作正常,但我有一个奇怪的来自客户的要求。我的客户有一个午夜特别。当顾客在2小时内下订单(从晚上11点到凌晨1点)时,他们希望创建一个特价,其中包含高达50%的折扣(基于$$$数量订单)。
正如你所看到的,凌晨1点是第二天。因此,它是从晚上11点今天到凌晨1点第二天
目前这里是我的存储过程(将选择基于总支出的最佳优惠):
CREATE PROCEDURE [uspGetBestDiscount]
(
...
...
...
@TotalSpend FLOAT = 0,
@OrderDate DATETIME = NULL, --NULL to use today date.
@DiscountRate FLOAT = NULL OUT,
@DiscountId INT = NULL OUT
)
AS
BEGIN
IF (@OrderDate IS NULL) SET @OrderDate = GETDATE();
DECLARE @OrderTime TIME = CAST(@OrderDate AS TIME)
SET @DiscountId = NULL; SET @DiscountRate = NULL;
SELECT TOP 1 @DiscountId = [DiscountId], @DiscountRate = [DiscountRate]
FROM [tblDiscount]
WHERE (@TotalSpend >= [MinSpend]) AND
(@OrderTime >= CAST([StartTime] AS TIME)) AND
(@OrderTime <= CAST([EndTime] AS TIME)) AND
...
...
...
ORDER BY [DiscountRate] DESC;
END;
一切工作罚款只要StartTime <= EndTime
。任何想法如何使EndTime作为第二天StartTime > EndTime
?
感谢
使用DATEADD函数 –
@Thebeginner - 是的,但我不能锻炼如何使用DATEADD的开始时间和结束时间日期始终01/01/1970(这是因为启动时间和结束时间不关心日期,只是时间)。 – Sam