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

标签 mysql variables stored-procedures

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

我将 2 个 IN 参数作为“年”和“月”传递给过程,

然后“我需要将这两个 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' 

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

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

最佳答案

确实可以使用此变体 -

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'
+------------+

关于mysql - 将 IN 参数存储在存储过程的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9394732/

相关文章:

mysql - k mysql 中的最近邻

c# - SQL Server 检查存储过程是否包含 WITH(NOLOCK)

MySQL 查询以检索移动 DATE 期间之间的 DISTINCT COUNT

python - 从外部函数调用元组作为另一个函数中的双变量

variables - 我试图在计数器达到 10 时重置计数器,但似乎无法正确执行。

java - 您如何(绕过)动态命名变量?

php - 如何通过带有自增列的存储过程向表中插入数据

mysql - 何时在 MySQL 中使用单引号、双引号和反引号

mysql - 如何在kafka jdbc连接源中过滤数据库中的表

php - 从多维数组创建子类别层次结构