2014-04-06 59 views
0

我創建了一個存儲過程,以便在客戶請求時生成交貨日。 根據客戶的區域它輸出交貨日。如何使用SQL存儲過程選擇動態日期

但是現在我也想給它添加日期。因此,它不僅輸出當天的日期,還會顯示即將到來的那一週的當天的日期。

這是我的存儲過程貌似現在(客戶ID是我的參數)

BEGIN 
SELECT 
    CASE customer_zone 
    WHEN 1 THEN 'monday' 
    WHEN 2 THEN 'tuesday' 
    WHEN 3 THEN 'wednesday' 
    WHEN 4 THEN 'thursday' 
    WHEN 5 THEN 'friday' 
    ELSE 'unknown' 
    END 
FROM customer 
WHERE customer_id = customerId; 
END 

它工作正常,但我真的不知道如何處理日期的功能 - 我想我可以使用now()函數並根據相對日期爲其添加一些數字?

回答

2

它看起來像您的customer_zone是從1到5的數字。也許您可以簡單地將customer_zone添加到NOW()CURRENT_DATE()以獲取相關日期。事情是這樣的:

SELECT DATE_ADD(CURRENT_DATE(), INTERVAL customer_zone DAY) AS my_date 
FROM customer 
+0

yes區域是根據客戶位置從1-5開始的數字。將customer_zone添加到now()是什麼意思? –

+0

@MacLuc查看我更新的答案。 –

+0

我看到 - 我不知道DATE_ADD,那是什麼? –

0

的第一個星期一,未來永遠

dateadd(d,datediff(d,'1900-01-01',getdate())/7*7+7,'1900-01-01') 

您可以添加(customer_zone - 1)天,這讓第一M/T/W/T/F爲customer_zone 1/2/3/4/5。根據您的SQL實現,您可能需要now(),today()等,而不是getdate()。

dateadd(d,datediff(d,'1900-01-01',getdate())/7*7+7+customer_zone-1,'1900-01-01') 

如果你google SQL with "next monday",你會發現很多有用的東西。