2012-04-18 4 views
0

DBにvarchar(形式: "2011.03")として保存されている日付の値に1年追加する方法はありますか? !varcharとして保存されている日付に1年間追加するには?

私はこれをしようとしますが、

DATE_FORMAT(DATE_ADD(STR_TO_DATE('2011.03', '%Y.%m'), INTERVAL 1 YEAR),'%Y.%m') 

はどうもありがとうございました:(NULLを返してい

編集:これは私が使用するクエリです:

SELECT DISTINCT column FROM table WHERE column BETWEEN '2011.03' AND DATE_FORMAT(DATE_ADD(STR_TO_DATE('2011.03', '%Y.%m'), INTERVAL 1 YEAR),'%Y.%m') ORDER BY column DESC 

( "2011.03"はパラメータ値であり、外に出ます)

+0

それだworking.Try SELECT DATE_FORMAT(DATE_ADD(STR_TO_DATE( '2011.03'、 '%のY.の%のM')、INTERVAL 1年)、 '%のY.の%のM') –

答えて

4

あなたが試みているのは正しい結果を与えることです

試してみてください。

SELECT DATE_FORMAT(DATE_ADD(STR_TO_DATE('2011.03', '%Y.%m'), INTERVAL 1 YEAR),'%Y.%m') 

それは2012.03を与えています。

編集:

あなたは> MySQLのバージョンでそれを実行可能にするためにトリックを下回る5.0

を使用することができますMySQLバージョンで> 5.0 str_to_date()は時々%のD形式の場合はNULLが返されますので、日付と月を追加します。指定子が書式文字列入力の最後の指定子ではありませんでした。

以下試し:

SELECT DATE_FORMAT(DATE_ADD(STR_TO_DATE('2011.03.01', '%Y.%m.%d'), INTERVAL 1 YEAR),'%Y.%m') 
+0

結果は良好ですが、テストしているテストクエリは何ですか?私の返すNULL ...そして、クエリではそれを使用するにはまだ動作していません...変更された質問 – VORiAND

+0

を参照して、この間隔でレコードがあることを確認してください。私はここでテストデータと同じクエリを試してみました。それは動作しています –

+0

この間隔で私はレコードを持って、私はそれをチェックしました。 Strange ...そしてSELECT DATE_FORMAT(DATE_ADD(STR_TO_DATE( '2011.03'、 '%Y.%m')、INTERVAL 1年)、 '%Y.%m')はまだNULLを返す:S – VORiAND

関連する問題