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