Не возвращает год в MySQL

#mysql #sql

Вопрос:

Запрос

 SELECT Name AS Period,YEAR(Name) AS Year FROM periods;
 
Период Год
202001 нулевой
202002 нулевой
202003 нулевой
202004 нулевой
202005 нулевой
202006 нулевой
202007 нулевой

Это прекрасно работает в MariaDB, но не в MySQL.

Как я могу это решить?

Комментарии:

1. Каков тип данных для Name столбца?

2. 202001 это строка, а не Дата. Используйте строковую функцию, такую как LEFT().

3. Вы определили этот столбец по-разному в mysql и MariaDB?

4. @RiggsFolly Нет, они одинаковые.

5. @forpas как я могу сделать то, что вы предлагаете?

Ответ №1:

Попробуйте выполнить следующий запрос

 SELECT Name AS Period,Year(DATE_FORMAT(concat(Name,'01'), '%Y%m%d')) AS Year FROM periods;
 

Комментарии:

1. Привет, спасибо за ваш ответ. Я попробовал, и это не работает!

2. Я думаю, что вам нужна полная дата (с номером дня), STR_TO_DATE() чтобы действительно работать должным образом @Tejas

3. Обновил запрос, пожалуйста, проверьте сейчас

4. @Tejas отлично работает, большое спасибо!