繁体   English   中英

如何使用SQL存储过程选择动态日期

[英]How to select a dynamic date with SQL stored procedure

我创建了一个存储过程,以便在客户请求时生成交付日。 根据客户的区域,它输出交货日。

但现在我也想为它添加日期。 所以它不仅输出了哪一天,而且还输出了即将到来的那一天当天的日期。

这就是我的存储过程现在的样子(customerId是我的IN参数)

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()函数并根据相对日添加一些数字?

看起来您的customer_zone是1到5之间的数字。也许您可以简单地将customer_zone添加到NOW()CURRENT_DATE()以获取相对日期。 像这样的东西:

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

未来的第一个星期一永远

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

您可以添加(customer_zone - 1)天来获得customer_zone 1/2/3/4/5的第一个M / T / W / T / F. 根据您的SQL实现,您可能需要now(),today()等,而不是getdate()。

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

如果你用“下周一”谷歌SQL ,你会发现很多有用的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM