Получить mySQL месяц (), чтобы использовать ведущие нули?
Как я могу указать функции MySQL MONTH () для возврата '08' вместо 8 в этом запросе?
Я бы хотел, чтобы вид работал по датам. В настоящее время получение результатов для даты, как
2006-9
2007-1
2007-10
2007-11
текущий запрос:
SELECT COUNT(*), CONCAT(YEAR(`datetime_added`), '-', MONTH(`datetime_added`)) as date FROM `person` WHERE (email = '' OR email IS NULL)
GROUP BY date
ORDER BY date ASC
4 ответов:
вместо этого используйте следующее:
DATE_FORMAT(`datetime_added`,'%Y-%m')
объяснение:
DATE_FORMAT()функция позволяет форматировать дату в любом случае вам нравится с помощью спецификаторов, описанных в таблице ниже (взято дословно из документация). Итак, строка формата'%Y-%m'означает: "полный год (4 цифры), за которым следует тире (-), за которым следует двузначный номер месяца".обратите внимание, что вы можете указать язык, используемый для имен дней/месяцев установка
lc_time_names. Чрезвычайно полезный. См.документация для более подробной информации.Specifier Description %a Abbreviated weekday name (Sun..Sat) %b Abbreviated month name (Jan..Dec) %c Month, numeric (0..12) %D Day of the month with English suffix (0th, 1st, 2nd, 3rd, …) %d Day of the month, numeric (00..31) %e Day of the month, numeric (0..31) %f Microseconds (000000..999999) %H Hour (00..23) %h Hour (01..12) %I Hour (01..12) %i Minutes, numeric (00..59) %j Day of year (001..366) %k Hour (0..23) %l Hour (1..12) %M Month name (January..December) %m Month, numeric (00..12) %p AM or PM %r Time, 12-hour (hh:mm:ss followed by AM or PM) %S Seconds (00..59) %s Seconds (00..59) %T Time, 24-hour (hh:mm:ss) %U Week (00..53), where Sunday is the first day of the week %u Week (00..53), where Monday is the first day of the week %V Week (01..53), where Sunday is the first day of the week; used with %X %v Week (01..53), where Monday is the first day of the week; used with %x %W Weekday name (Sunday..Saturday) %w Day of the week (0=Sunday..6=Saturday) %X Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V %x Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v %Y Year, numeric, four digits %y Year, numeric (two digits) %% A literal “%” character %x x, for any “x” not listed above
вы можете использовать заполнение как
SELECT COUNT(*), CONCAT(YEAR(`datetime_added`), '-', LPAD(MONTH(`datetime_added`), 2, '0')) as date FROM `person` WHERE (email = '' OR email IS NULL) GROUP BY date ORDER BY date ASC
MONTH () возвращает целое число, поэтому, конечно, нет ведущего нуля. Вам нужно будет преобразовать его в строку, слева-pad '0' и взять последние 2 символа.
Comments