2017-12-19 9 views
0
SELECT STR_TO_DATE(CONCAT(YEAR(MAX(my_date)) , '-', MONTH(MAX(my_date))+1 , '-', 01) , '%Y-%m-%d') 

これを使用して日付を抽出しています。Jan月を01の代わりに13とするSQLクエリ

Output  Data Entry till 
2017-07-01 2017 June entry complete 
2017-08-01 2017 July entry complete 

12月のデータ入力が終わるとすぐに、2018-01-01の代わりに2018-13-01が得られます。私はそれが+1のためにあることを知っています。私は月の価値を追加しています。私はどのように私は12に後に01にそれをループするのか分からないですか?

my_dateのcsvファイルの値は、2017-01-06のようになります。文字列形式です。

+0

「MySQL」または「SQL Server」? – Squirrel

+1

正しく変換されない 'my_date'の値は何ですか?これがMySQLの場合は、Microsoft SQL Serverとタグ付けしないでください。同じことではありません。 – tadman

+0

これはMySQLです。間違ったタグのお詫び –

答えて

1

月に1を加算して文字列の日付演算を行っています。代わりに、DateAdd()関数を使用します。

SELECT date_add(STR_TO_DATE(CONCAT(YEAR(MAX(my_date)) , '-', MONTH(MAX(my_date)) , '-', 01) , '%Y-%m-%d'), INTERVAL 1 MONTH) 
+0

しかし、それ以外の月の値も変更されませんか? –

+0

ああ私はそれを手に入れよう!私はこれがうまくいくと思います!ありがとう。 –

関連する問題