0

DBにvarchar(形式: "2011.03")として保存されている日付値に1年を追加するにはどうすればよいですか?

私はこれを試していますが、NULLを返します:(

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

どうもありがとうございます!

編集:これは私が使用したいクエリです:

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」はパラメータ値であり、外部にあります)

4

1 に答える 1

4

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

試す :

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

それは与えて2012.03います。

編集:

以下のトリックを使用して、mysqlバージョン>5.0で機能させることができます

str_to_date()Mysqlバージョン>5.0では、%Dフォーマット指定子がフォーマット文字列入力の最後の指定子でない場合にNULLを返すことがあるため、日付付きの月を追加します。

以下をお試しください:

 SELECT DATE_FORMAT(DATE_ADD(STR_TO_DATE('2011.03.01', '%Y.%m.%d'), INTERVAL 1 YEAR),'%Y.%m')
于 2012-04-18T09:38:30.987 に答える