如何指定 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
请使用以下内容:
DATE_FORMAT(`datetime_added`,'%Y-%m')
说明:
DATE_FORMAT()
函数可让您使用下表中描述的说明符以您喜欢的方式格式化日期(逐字取自文档)。因此,格式字符串 '%Y-%m'
的意思是:“完整的年份(4 位数字),后跟破折号 (-
),后跟两位数的月份数字”。
lc_time_names
系统变量来指定日/月名称使用的语言。非常有用。请参阅文档了解更多详细信息。
说明符 | 描述 |
---|---|
%a | 工作日缩写名称(Sun..Sat) |
%b | 月份名称缩写(Jan..Dec) |
%c | 月份,数字 (0..12) |
%D | 带有英文后缀的月份日期(0th, 1st, 2nd, 3rd, …) |
%d | 一月中的某一天,数字 (00..31) |
%e | 一月中的第几天,数字 (0..31) |
%f | 微秒(000000..999999) |
%H | 小时 (00..23) |
%h | 小时 (01..12) |
%我 | 小时 (01..12) |
%我 | 分钟,数字 (00..59) |
%j | 一年中的某一天(001..366) |
%k | 小时 (0..23) |
%l | 小时(1..12) |
%M | 月份名称(一月..十二月) |
%m | 月份,数字 (00..12) |
%p | 上午或下午 |
%r | 时间,12 小时(hh:mm:ss 后跟 AM 或 PM) |
%S | 秒(00..59) |
%s | 秒(00..59) |
%T | 时间,24 小时(hh:mm:ss) |
%U | 周 (00..53),其中星期日是一周的第一天; WEEK() 模式 0 |
%u | 周 (00..53),其中星期一是一周的第一天; WEEK() 模式 1 |
%V | 周 (01..53),其中星期日是一周的第一天; WEEK() 模式 2;与%X |
%v | 周 (01..53),其中星期一是一周的第一天; WEEK() 模式 3;与%x一起使用 |
%W | 工作日名称(星期日..星期六) |
%w | 一周中的哪一天(0=星期日..6=星期六) |
%X | 一周的年份,其中星期日是一周的第一天,数字,四位数字;与%V |
%x | 星期的年份,其中星期一是一周的第一天,数字,四位数字;与 %v |
%Y | 年份,数字,四位数字 |
%y | 年份,数字(两位数) |
%% | 字面上的 % 字符 |
%x | x,对于上面未列出的任何“x” |
您可以像这样使用填充
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() 返回一个整数,所以当然没有前导零。 您需要将其转换为字符串,向左填充“0”并获取最后 2 个字符。
DATE_FORMAT(`datetime_added`,'%Y - %m')
请使用 DATE_FORMAT(CURRENT_DATE(),"%m") 获取两位数月份