SELECT STR_TO_DATE( CONCAT( YEAR(MAX(my_date)) , '-', MONTH(MAX(my_date))+1 , '-', 01 ) , '%Y-%m-%d')
Я использую это, чтобы извлечь дату. Я получаю следующий результат:
Output Data Entry till
2017-07-01 2017 June entry complete
2017-08-01 2017 July entry complete
Но как только ввод данных будет выполнен в 2017 году, я получу 2018-13-01 вместо 2018-01-01. Я знаю, что из-за +1 я добавляю в месяц значение. Я не уверен, как я зациклирую его на 01 после 12?
Значение в файле csv для my_date выглядит как 2017-01-06. Он находится в строчном формате.
Вы выполняете арифметику даты в строке, добавляя 1 к месяцу. Вместо этого используйте функцию DateAdd()
.
SELECT date_add(STR_TO_DATE( CONCAT( YEAR(MAX(my_date)) , '-', MONTH(MAX(my_date)) , '-', 01 ) , '%Y-%m-%d'), INTERVAL 1 MONTH)