将IN参数存储在存储过程的变量中

时间:2012-02-22 12:28:46

标签: mysql variables stored-procedures

我正在创建一个存储过程,其中,

我传递的2个IN参数为'year'& '月'到程序,

然后“我需要将这两个IN参数存储在date_format中的一个变量中('YYYY-MM-DD')。”

之后我想将该变量与Date_Format一起使用。

我将尝试用存储过程格式解释上述内容

CREATE PROCEDURE build_table(IN years CHAR(5) ,IN months CHAR(4))
BEGIN
DECLARE format1 date ;

# Now i want to store both IN parameters in 'format1' variable and then format1 should be in format 'YYYY-MM-DD' 

我可以在存储过程中执行此操作吗?

如果是,请给我一些指导。

1 个答案:

答案 0 :(得分:1)

Tru使用此变体 -

SET @year = 2012;
SET @month = 2;
SELECT STR_TO_DATE(CONCAT(@year, '-', @month), '%Y-%c');

STR_TO_DATE功能可以帮助您创建日期值。使用IN参数更改@year和@month变量。

然后,您可以使用DATE_FORMAT函数格式化日期时间值,例如:

SET @year = 2012;
SET @month = 2;
SET @dt = STR_TO_DATE(CONCAT(@year, '-', @month), '%Y-%c');
SELECT DATE_FORMAT(@dt, '%m/%d/%Y');
+------------------------------+
| DATE_FORMAT(@dt, '%m/%d/%Y') |
+------------------------------+
| 02/00/2012                   |
+------------------------------+

CREATE PROCEDURE build_table(IN years CHAR(5), IN months CHAR(4))
BEGIN
  DECLARE format1 date;
  SET format1 = DATE_SUB(STR_TO_DATE(CONCAT(years, '-', months, '-01'), '%Y-%c-%e'), INTERVAL 1 DAY);


  SELECT format1;
END

CALL build_table(2012, 1);
+------------+
| format1    |
+------------+
| 2011-12-31 | -- default format is 'YYYY-MM-DD'
+------------+