標籤:str ase asp ted mat 最後一天 小數 mod floor
進階查詢參看:
http://www.w3school.com.cn/sql/
http://www.cnblogs.com/kissdodog/p/4168721.html
-- ------------------ 字串函數 -------------------
-- 大寫轉換 ucase(),upper()
SELECT UCASE(ename) FROM emp;
SELECT UPPER(ename) FROM emp;
-- 小寫轉換 lcase(),lower
SELECT LCASE(ename) FROM emp;
SELECT LOWER(ename) FROM emp;
-- 字串拼接 concat()
SELECT CONCAT(ename,‘.com‘) ‘網域名稱‘ FROM emp;
-- MySQL 字串截取函數:left(), right(), substring(), substring_index()。
-- 還有 mid(), substr()。其中,mid(), substr() 等價於 substring() 函數,
-- 截取 substr -- http://www.cnblogs.com/zdz8207/p/3765073.html
SELECT SUBSTR(ename,1,1) FROM emp;
SELECT SUBSTRING(ename,2) FROM emp;
-- 以首字母大寫的方式顯示所有員工姓名
SELECT CONCAT(UPPER(SUBSTR(ename,1,1)),LOWER(SUBSTR(ename,2))) AS ‘員工姓名‘ FROM emp;
-- 以首字母小寫方式,其他字母大寫的方式顯示員工資訊
SELECT CONCAT(LCASE(SUBSTR(ename,1,1)),UCASE(SUBSTR(ename,2))) AS ‘員工姓名‘ FROM emp;
-- ---------------------- 數學函數 ------------------------------
-- round() 函數用於把數值欄位四捨五入為指定的小數位元。
SELECT ROUND(19.3445,2); -- 19.34
SELECT ROUND(19.3495,2); -- 19.35
-- mod() 函數用於求模值
SELECT MOD(2,3); -- 2%3 = 2
-- SQRT(x) 返回x的平方根
SELECT SQRT(25); -- 5
-- ceil() 向上取整
SELECT CEIL(2.3); -- 3
-- FLOOR(x) 向下取整
SELECT FLOOR(2.9) -- 2
-- ABS(x)返回x的絕對值
SELECT ABS(-1) -- 返回1
-- RAND()返回0->1的隨機數
SELECT RAND(); -- 0.93099315644334
-- RAND(x)返回0->1的隨機數,x值相同時返回的隨機數相同
SELECT RAND(2); -- 1.5865798029924
-- 顯示在一個月30天的情況下所有員工的日薪
SELECT ename,sal ,hiredate FROM emp WHERE DAY(LAST_DAY(hiredate) )= ‘30‘
-- select hiredate,day(Last_day(hiredate)) from emp
-- ---------------------- 時間函數 -----------------------
-- CURDATE(),CURRENT_DATE() 返回當前日期
SELECT CURDATE(); -- 2017-09-28
SELECT CURRENT_DATE();
-- NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE(),LOCALTIMESTAMP()
-- 返回當前日期和時間
SELECT NOW(); -- 2017-09-28 18:58:50
SELECT SYSDATE();
-- YEAR() 返回年
SELECT YEAR(NOW()); -- 2017
-- MONTH() 返回月
SELECT MONTH(NOW()); -- 9
-- DAY() 返回日
SELECT DAY(NOW()) -- 28
-- DATEDIFF()返回兩個日期之間的天數
SELECT DATEDIFF(‘2008-12-30‘,‘2008-12-29‘) AS DiffDate -- 1
-- ADDDATE(d,n)計算其實日期d加上n天的日期
SELECT ADDDATE(NOW(),1); -- 2017-09-29 19:13:47 今天是 2017-09-28 19:13:47
-- LAST_DAY() 獲得本月的最後一天
SELECT LAST_DAY(NOW()); -- 2017-09-30
-- WEEKDAY()當周第幾天
SELECT WEEKDAY(NOW()) -- 3 今天天周四,第一天為 0
-- DAYOFMONTH()當月 第幾天
SELECT DAYOFMONTH(NOW()); -- 28
-- SUBDATE(d,INTERVAL expr type)日期d減去一個時間段後的日期
SELECT SUBDATE(‘2011-11-11 11:11:11‘, INTERVAL 5 MINUTE) -- 2011-11-11 11:06:11 (TYPE的取值與上面那個列出來的函數類似)
-- 時間格式化 -- http://www.w3school.com.cn/sql/func_date_format.asp
SELECT DATE_FORMAT(NOW(),‘%Y 年 %m月 %d日 %H時 %i分 %s秒‘);
-- ADDDATE(d,INTERVAL expr type 計算起始日期d加上一個時間段後的日期
SELECT ADDDATE(‘2011-11-11 11:11:11‘,1) -- 2011-11-12 11:11:11(預設是天)
SELECT ADDDATE(‘2011-11-11 11:11:11‘, INTERVAL 5 MINUTE); -- 加五分鐘
-- 返回入職8個月的員工資訊
SELECT * FROM emp WHERE ADDDATE(hiredate, INTERVAL 8 MONTH) = NOW();
-- 找出各月倒數第三天受雇的所有員工
SELECT ename,hiredate FROM emp WHERE DAY(hiredate) = DAY(LAST_DAY(hiredate) - 2);
-- 顯示員工入職天數
SELECT ename,DATEDIFF(NOW(),hiredate) ‘入職天數‘ FROM emp;
-- 顯示服務滿10年的員工姓名和僱傭天數
SELECT ename,DATEDIFF(NOW(),hiredate) ‘僱傭天數‘ FROM emp WHERE NOW() > ADDDATE(hiredate,INTERVAL 10 YEAR);
-- 得到當周/當月/當年第一天,最後一天
SELECT SUBDATE(NOW(),INTERVAL WEEKDAY(NOW()) DAY) -- 當周第一天
SELECT SUBDATE(NOW(),INTERVAL DAYOFMONTH(NOW())-1 DAY) -- 當月第一天
SELECT SUBDATE(NOW(),INTERVAL DAYOFYEAR(NOW()) -1 DAY) -- 當年第一天
SELECT ADDDATE(NOW(),INTERVAL 6-WEEKDAY(NOW()) DAY); -- 當周最後一天
SELECT LAST_DAY(NOW());-- 當月最後一天
SELECT ADDDATE(SUBDATE(NOW(),INTERVAL DAYOFYEAR(NOW()) DAY),INTERVAL 1 YEAR ) ‘當年最後一天‘-- 當年最後一天
-- ----------------------轉換函式-----------------------------------------------
-- TO_DAYS(d) 計算日期d距離0000年1月1日的天數
SELECT TO_DAYS(NOW());
-- STR_TO_DATE(d,‘format‘); 字串轉時間
SELECT STR_TO_DATE(hiredate,‘%Y-%m-%d %H:%i:%s‘) FROM emp;
-- 顯示1980年入職的員工
SELECT * FROM emp WHERE YEAR(hiredate) = 1980;
-- 顯示所有12月份入職的員工
SELECT * FROM emp WHERE MONTH(hiredate) = 12;
-- ----------------------------- 加密-------------------------------
SELECT MD5(deptno) FROM emp;
[知了堂學習筆記]_mysql函數