2012-02-22 19 views
0

の変数に、私は私が必要」そして、パラメータに格納ストアドプロシージャ

を私が手続きに&「月」「年」とINパラメータ2を渡していた、

でストアドプロシージャを作成していますこれら両方のINパラメータを( 'YYYY-MM-DD'のように)date_formatの1つの変数に格納します。

その後、その変数をその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

トゥルーこのバリアントを使用する -

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

STR_TO_DATE関数は、日付値を作るのに役立ちます。 INパラメータで@yearおよび@month変数を変更します。

次にあなたが例えば、datetime値をフォーマットする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' 
+------------+ 
+0

OK、それは私がINパラメータ2が 'Y' として 'M' と言わせて渡すことを意味しますcharデータ型の場合、 'set @ y = 2012;のように設定します。 @ m = 2を設定する;私は正しい方法で検討していますか? 'STR_TO_DATE(CONCAT(@year、 ' - '、@month)、 '%Y-%c')を格納したいと思います。 'を別の変数で使用する必要があります。 – Java

+0

ストアドプロシージャを追加します – Devart

+0

また、CHARではなくINTデータ型を使用できます。 – Devart

関連する問題