mysql常用函数
时间函数
SELECT NOW();
SELECT CURDATE();
SELECT CURTIME();
SELECT DATE(NOW());
SELECT TIME(NOW());
SELECT EXTRACT(MONTH FROM NOW());
SELECT UNIX_TIMESTAMP(NOW()); //日期转时间戳,单位为秒
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())); //时间戳转日期
`DATE_FORMAT(date,format) 格式化时间为字符串
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s')
STR_TO_DATE(str,format) 字符串格式化为时间,大多数情况时间格式的字符串可以直接使用,但不能作为某些时间函数的表达式
SELECT EXTRACT(MONTH FROM STR_TO_DATE('2017-06-31 11:32:42','%Y-%m-%d %H:%i:%s'))
SELECT CAST(CURDATE() AS DATETIME); //2017-05-31 00:00:00
SELECT DATE_FORMAT(CURDATE(),'%Y-%m-%d %H:%i:%s'); //2017-05-31 00:00:00
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2) 计算两个日期的时间差(后-前)
SELECT TIMESTAMPDIFF(MONTH,'2009-12-01','2009-09-01');
SELECT TIMESTAMPDIFF(YEAR,'2009-05-01','2008-01-01');
SELECT TIMESTAMPDIFF(SECOND,DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'),'2013-03-07 15:43:00')
DATEDIFF(datetime_expr1,datetime_expr2) 计算两个日期的天差(前-后)
DATEDIFF
与TIMESTAMPDIFF(DAY,datetime_expr1,datetime_expr2)
的差别?
1)1个后-前,1个前-后;
2)TIMESTAMPDIFF的结果是毫秒,然后换算成天,不足1天则为0;DATEDIFF舍去TIME相减,结果为整数天
DATE_ADD(date,INTERVAL expr unit) 向日期添加指定的时间,expr可为负
SELECT DATE_ADD(now(),INTERVAL -3 MONTH);
SELECT DATE_ADD(now(),INTERVAL 7 DAY);
DATE_SUB(date,INTERVAL expr unit) 向日期减去指定的时间
等同于DATE_ADD(date,INTERVAL -expr unit)
整数函数
ROUND(X) 位值X四舍五入为整数,无小数位
ROUND(X,D) 将值X四舍五入为小数点D位的数值
FLOOR(X) 向下取整
CEIL(X) 向上取整