mysql常用的數學函式和日期函式
數學函式
#round 四捨五入
SELECT ROUND(-1.55); 結果為:-2
SELECT ROUND(1.567,2); 結果為:1.57。後面的2為保留2位小數
#ceil 向上取整,返回>=該引數的最小整數
SELECT CEIL(-1.02); 結果為:-1
#floor 向下取整,返回<=該引數的最大整數
SELECT FLOOR(-9.99); 結果為:-10
#truncate 截斷
SELECT TRUNCATE(1.69999,1); 結果為:1.6。後面的1表示擷取小數點後一位。
#mod取餘
/*
mod(a,b) : a-a/b*b
mod(-10,-3):-10- (-10)/(-3)*(-3)=-1
*/
SELECT MOD(10,-3); 結果為:1。計算規則為:10-10/(-3) *( -3),結果為1
SELECT 10%3; 結果為:1。
日期函式
#now 返回當前系統日期+時間
SELECT NOW(); 結果為:2018-11-15 12:23:32
#curdate 返回當前系統日期,不包含時間
SELECT CURDATE(); 結果為:2018-11-15
#curtime 返回當前時間,不包含日期
SELECT CURTIME(); 結果為:12:24:10
#可以獲取指定的部分,年、月、日、小時、分鐘、秒
SELECT YEAR(NOW()) 年; 結果為:2018
SELECT YEAR('1998-1-1') 年; 結果為:1998
#實際表舉例
SELECT YEAR(hiredate) 年 FROM employees;
SELECT MONTH(NOW()) 月; 結果為:11。代表的是當前月份
SELECT MONTHNAME(NOW()) 月; 結果為:November。英文狀態的當前月份。
#str_to_date 將字元通過指定的格式轉換成日期
SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d') AS out_put;
結果為:1998-03-02
#(實際表舉例)查詢入職日期為1992--4-3的員工資訊
SELECT * FROM employees WHERE hiredate = '1992-4-3';
SELECT * FROM employees WHERE hiredate = STR_TO_DATE('4-3 1992','%c-%d %Y');
#date_format 將日期轉換成字元
SELECT DATE_FORMAT(NOW(),'%y年%m月%d日') AS out_put;
結果為:18年11月15日
#(實際表舉例)查詢有獎金的員工名和入職日期(xx月/xx日 xx年)
SELECT last_name,DATE_FORMAT(hiredate,'%m月/%d日 %y年') 入職日期
FROM employees
WHERE commission_pct IS NOT NULL;