因为刚刚入职一家新公司,原来一直用oracle,新公司用的mysql,正好借此机会学习一下,也记录一下,有需要的你,可以参考下
1、获取当前时间:select now() or SELECT SYSDATE() or select CURDATE()
1)其他日期相关函数
select DATE_FORMAT(now(),'%Y-%m-%d') as cs1,STR_TO_DATE(now(),'%Y-%m-%d %H:%i:%S') as cs2
2).日期运算函数MONTH(date):返回date的月份数,例如MONTY(‘2013-08-20’),返回:8 DAY(date):返回date的天数,例如DAY(‘2013-08-20’),返回:20 YEAR(date):返回date的年份数,例如YEAR(‘2013-08-20’),返回:2013TO_DAYS(date):date对应的天数,例如TO_DAYS (‘2008-10-07’),返回:733687WEEK(date):返回date对应周几,例如: WEEK(‘2013-08-20’),返回:2DATEDIFF(date1,date2):返回date1-date2的天数差别,例如:DATEDIFF(‘2013-08-20’,’2013-08-18 13:30:14’),返回:2
2、连接函数concat(str1,str2) :select concat('my ','name');
3、带分隔符的连接函数concat_ws(separator,str1,str2):select concat_ws('#','名称:','vincky');
4、IF(exp1,exp2,exp3):若是exp1 为真,返回exp2;若是exp1为假,返回exp3:
select if(2>1,'true','false');
5、IFNULL(exp1,exp2):若是exp1 IS NOT NULL,返回exp1,否则返回exp2:
select IFNULL(null,'晓倩')
select IFNULL('vincky','晓倩');
6、 NULLIF(exp1,exp2):若是exp1=exp2,返回NULL,否则返回exp1
select NULLIF('vincky','vincky');
select NULLIF('vincky','晓倩');
7、SUBSTRING(exp1,pos,len): exp1为字符串,pos为位置,len为长度
select substring('1234.qq.com',1,4);
8、TRIM(exp1):去掉exp1中的开头和 结尾的空格
select concat(TRIM(' vincky '),'倩');
9、REPLACE(str,from,to):返回字符串str,其字符串from的所有出现由字符串to代替
select REPLACE('www.mysql.com', 'mysql', 'oracle');
10、case
when 条件1 then 结果1
when 条件2 then 结果2
when 条件3 then 结果3
else 结果4 end
写法一:
case sex when 1 then 男 when 2 then 女 else 未知 end
写法二:
case when sex=1 then 男 when sex=2 then 女 else 未知 end
其他例子:
select CASE WHEN count(1) >0 THEN DATEDIFF(NOW(),t.STORE_TIME) ELSE (select DATEDIFF(NOW(),STORE_TIME) from guizi_order where CUSTOMER_PHONE='13708985751' ORDER BY STORE_TIME LIMIT 1) END as days from guizi_order_bak t where t.CUSTOMER_PHONE='13708985751' ORDER BY t.STORE_TIME LIMIT 1
11、mysql中计算两个日期的时间差函数TIMESTAMPDIFF (返回日期或日期时间表达式start 和end 之间的整数差)。
SELECT TIMESTAMPDIFF(MONTH,'2018-05-01','2018-03-01') m,TIMESTAMPDIFF(YEAR,'2019-05-01','2018-01-01') y