[知了堂學習筆記]_mysql函數

來源:互聯網
上載者:User

標籤: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函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.