Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SQL存储过程选择动态日期_Sql_Date_Stored Procedures - Fatal编程技术网

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

如何使用SQL存储过程选择动态日期,sql,date,stored-procedures,Sql,Date,Stored Procedures,我创建了一个存储过程,以便在客户请求时生成交货日期。 根据客户的区域,它输出交货日期 但现在我还要加上日期。因此,它不仅输出哪一天,而且还输出下一周的那一天的日期 这就是我的存储过程现在的样子(customerId是我的IN参数) 它工作正常,但我真的不知道如何处理日期功能-我想我可以使用now()函数,并根据相对日期向其添加一些数字?看起来您的客户区域是一个从1到5的数字。也许您可以简单地将客户区域添加到NOW()或CURRENT\u DATE()以获取相对日期。大概是这样的: SELECT

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

但现在我还要加上日期。因此,它不仅输出哪一天,而且还输出下一周的那一天的日期

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


它工作正常,但我真的不知道如何处理日期功能-我想我可以使用now()函数,并根据相对日期向其添加一些数字?

看起来您的客户区域是一个从1到5的数字。也许您可以简单地将客户区域添加到
NOW()
CURRENT\u 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()


如果你愿意,你会发现很多有用的东西。

是区域是根据客户位置从1到5的数字。将customer_zone添加到now()是什么意思?我明白了-我不知道DATE_add,那是什么?@MacLuc这是一个MySQL函数,可以为日期添加值(例如天)。你不是在使用MySQL吗?是的,我在使用MySQL,只是不知道function@MacLuc您可以使用
ADDDATE()
DATE\u ADD()
,它们是同义词。检查。
  dateadd(d,datediff(d,'1900-01-01',getdate())/7*7+7,'1900-01-01')
  dateadd(d,datediff(d,'1900-01-01',getdate())/7*7+7+customer_zone-1,'1900-01-01')