我正在创建一个存储过程,其中,
我传递的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'
我可以在存储过程中执行此操作吗?
如果是,请给我一些指导。
答案 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'
+------------+