前阵子参加一个面试的时候被问了一个问题, mysql数据库里如何统计一年中每个月的多个指标的总访问量. 我一听觉得不是很简单吗? 那人给我看了一个简单的数据表结构, 三个字段, 主键id, 访问量数num, 访问时间vtime. 然后开始写sql语句, 想想以月来计算所有的访问量就可以了. 写了一半的时候我问那个人vtime是什么类型的,他说是timestamp, 然后我就拼命地想怎么取出他的年月呢? 后来跟他说我实在想不起来时间格式怎么转换, 那个笑着跟我说回去要多学习. 回来后我搜索了一下mysql函数,发现很多我不大用的函数. 最后知道该怎么写那个查询语句了 SELECT SUM(num) FROM table_name GROUP BY DATE_FORMAT( vtime, '%y-%m' ) ;

TIMESTAMP 的类型:
列类型       显示格式
TIMESTAMP(14) YYYYMMDDHHMMSS
TIMESTAMP(12) YYMMDDHHMMSS
TIMESTAMP(10) YYMMDDHHMM
TIMESTAMP(8)  YYYYMMDD
TIMESTAMP(6)  YYMMDD
TIMESTAMP(4)  YYMM
TIMESTAMP(2)  YY

DATE_ADD(date,INTERVAL value Type)
ADD_DATE(date,INTERVAL value Type)
把某个值加到指定的日期。
E.G. DATE_ADD('1998-01-02', interval 31 day); output is 1998-02-02

DATE_SUB(date,INTERVAL value Type)and  SUBDATE (date,INTERVAL value Type)
把指定的日期減去某个值

DATE_FORMAT(date, format_symbol)
把日期转成format_symbol所指定的格式
E.G. date_format('1998-01-02 12:21:20', '%y %m %d %h:%i:%s'); output is 1998 01 02  12:21:20

DAYNAME(date)
返回指定日期是星期几

DAYOFMONTH(date)
返回指定的日期是该月的第几天

DAYOFWEEK(date)
返回指定的日期是星期中的第几天

DAYOFYEAR(date)
返回指定的日期是一年中第几天