2016-12-05 3 views
-2

У меня есть столбец ifd0_DateTime в таблице с именем photo, которая содержит дату в следующем формате: 1966:12:22 17:19:57. Мне нужно подсчитать количество фотографий месяц мудрый на каждый год.Получить дату в нужном формате с помощью SQL-запроса

До сих пор у меня есть этот запрос. но это работает неправильно.

SELECT ifd0_DateTime, count(*) FROM photo group by YEAR(ifd0_DateTime), MONTH(ifd0_DateTime);

Может кто-нибудь, пожалуйста, исправить это?

+0

Как ваш запрос не работает? –

+0

Я исправил его позже. – piyush121

+0

Почему downvotes? Должен ли я удалить этот вопрос? – piyush121

ответ

2
SELECT STR_TO_DATE(LEFT(ifd0_DateTime, 7), '%Y:%m'), 
     COUNT(*) AS dateCnt 
FROM photo 
GROUP BY STR_TO_DATE(LEFT(ifd0_DateTime, 7), '%Y:%m') 
+0

Код ошибки: 1582. Неправильный счетчик параметров при вызове функции native 'STR_TO_DATE' – piyush121

+0

@ piyush121 Пропала запятая. –

+0

Работает отлично. Вы также получите мой голос! – piyush121

1

Вместо date выберите Year и Month

Попробуйте

SELECT YEAR(ifd0_DateTime), MONTH(ifd0_DateTime), count(*) 
FROM photo 
group by YEAR(ifd0_DateTime), MONTH(ifd0_DateTime) 
+0

Любые причины для downvote:/ –

0
SELECT YEAR(ifd0_DateTime), MONTH(ifd0_DateTime), count(*) FROM photo 
group by YEAR(ifd0_DateTime), MONTH(ifd0_DateTime); 

ли вы имеете в виду, что?

1

Правильный способ хранения даты - использовать встроенные типы данных. Однако похоже, что вы храните значение в виде строки. Если это так, вам просто нужны первые 7 символов:

SELECT LEFT(ifd0_DateTime, 7) as yyyymm, count(*) 
FROM photo 
GROUP BY LEFT(ifd0_DateTime, 7) 
ORDER BY yyyymm; 

Однако вы действительно должны исправить данные.

+0

Неудачники. Это уже формат даты. – piyush121

+2

@ piyush121. , , Учитывая, что вы * приняли * ответ, который использует значение 'LEFT()' для значения, трудно поверить, что он уже находится в формате даты. Вы понимаете разницу между строкой и 'datetime'? Если это 'datetime', почему вы приняли ответ, который рассматривает его как строку? –

+0

Возможно, я ошибаюсь. Я думал, вы спрашиваете, если это действительный день. Но ваш запрос дал смутный результат. – piyush121

Смежные вопросы