mysql常用函数

字符串:
字符串转数字:  cast(字符串  as SIGNED)

concat(str1,str2,...):把参数连成一个长字符串并返回(任何参数是null时返回null) 
select concat('my', 's', 'ql');   #mysql

locate(substr,str):返回字符串substr在字符串str的第pos个位置起第一次出现的位置(str不包含substr时返回0)  
select locate('bar', 'foobarbar',5); # 5  从0开始数

instr(str,substr):返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0) 
select instr('foobarbar', 'bar');  #5 

lpad(str,len,padstr):用字符串padstr填补str左端直到字串长度为len并返回
select lpad('hi',4,'??');    #??hi 


rpad(str,len,padstr):用字符串padstr填补str右端直到字串长度为len并返回
select rpad('hi',5,'?'); #hi???

left(str,len)   
返回字符串str的左端len个字符
select left('dasdasf23fdfsdf',5)  #dasda  返回左边开始的5个字符

right(str,len) #返回字符串str的右端len个字符
select right('dasdasf23fdfsdf',5);  #dfsdf

replace(str,from_str,to_str) #用字符串to_str替换字符串str中的子串from_str并返回 
select replace('www.mysql.com', 'w', 'ww'); #'wwwwww.mysql.com' 

repeat(str,count)#返回由count个字符串str连成的一个字符串(任何参数为null时返回null,count<=0时返回一个空字符串)
select repeat('mysql', 3);   # 'mysqlmysqlmysql' 

reverse(str) #颠倒字符串str的字符顺序并返回
select reverse('abc'); #cba

insert(str,pos,len,newstr) #把字符串str由位置pos起len个字符长的子串替换为字符串
select insert('quadratic', 3, 4, 'what'); #quwhatdratic

elt(n,str1,str2,str3,...) #返回第n个字符串(n小于1或大于参数个数返回null)
select elt(1, 'ej', 'heja', 'hej', 'foo'); #ej

数学函数:
abs(n) #返回n的绝对值
select abs(2); #2

sign(n) #返回参数的符号(为-1、0或1)
正数为1,负数为-1,0为0
select sign(12)  #1
select sign(0)  #0
select sign(-12) #-1

mod(n,m) #取模运算,返回n被m除的余数(同%操作符)
select mod(234, 10);  #4

floor(n) #返回不大于n的最大整数值
select floor(1.23); #1

ceiling #返回不小于n的最小整数值
select ceiling(1.23); #2

round(n,d) #返回n的四舍五入值,保留d位小数(d的默认值为0) 
select round(-1.23);  #-1

exp(n) #返回值e的n次方(自然对数的底)
select exp(2); #7.389056

log(n) #返回n以10为底的对数
  select log10(100); #2

pow(x,y) #返回值x的y次幂
select pow(2,2); #4

sqrt(n) #返回非负数n的平方根
select sqrt(4); #2

pi()  #返回圆周率
select pi(); #3.1415926

cos(n) #返回n的余弦值
select cos(pi()); #-1

rand(n) #返回在范围0到1.0内的随机浮点值(可以使用数字n作为初始值)
select rand(); #

truncate(n,d) #保留数字n的d位小数并返回
select truncate(1.223,1); #1.2

least(x,y,...)  #返回最小值(如果返回值被用在整数(实数或大小敏感字串)上下文或所有参数都是整数(实数或大小敏感字串)则他们作为整数(实数或大小敏感字串)比较,否则按忽略大小写的字符串被比较)
select least(2,0); #返回最小值 0

greatest(x,y,...) #返回最大值(其余同least())
select greatest(2,0) #返回最大值 2

时期时间函数:yy
dayofweek(date) :返回日期date是星期几(1=星期天,2=星期一,……7=星期六,odbc标准) 
select dayofweek('2018-12-25') #3  星期二

weekday(date): 返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)
select weekday('2018-12-25') #1 星期二

dayofmonth(date)    
返回date是一月中的第几日(在1到31范围内)    
mysql> select dayofmonth('1998-02-03');    
  -> 3    

dayofyear(date)    
返回date是一年中的第几日(在1到366范围内)    
mysql> select dayofyear('1998-02-03');    
  -> 34    

month(date)    
返回date中的月份数值    
mysql> select month('1998-02-03');    
  -> 2    

dayname(date)    
返回date是星期几(按英文名返回)  
mysql> select dayname("1998-02-05");    
  -> 'thursday'    

monthname(date)    
返回date是几月(按英文名返回)  
mysql> select monthname("1998-02-05");    
  -> 'february'    

quarter(date)    
返回date是一年的第几个季度    
mysql> select quarter('98-04-01');    
  -> 2    

week(date,first)   
返回date是一年的第几周(first默认值0,first取值1表示周一是
周的开始,0从周日开始)  
mysql> select week('1998-02-20');    
  -> 7    
mysql> select week('1998-02-20',0);    
  -> 7    
mysql> select week('1998-02-20',1);    
  -> 8    

year(date)    
返回date的年份(范围在1000到9999)    
mysql> select year('98-02-03');    
  -> 1998    

hour(time)    
返回time的小时数(范围是0到23)   
mysql> select hour('10:05:03');    
  -> 10    

minute(time)    
返回time的分钟数(范围是0到59)    
mysql> select minute('98-02-03 10:05:03');    
  -> 5    

second(time)    
返回time的秒数(范围是0到59)   
mysql> select second('10:05:03');    
  -> 3    

period_add(p,n)    
增加n个月到时期p并返回(p的格式yymm或yyyymm)    
mysql> select period_add(9801,2);    
  -> 199803    

period_diff(p1,p2)    
返回在时期p1和p2之间月数(p1和p2的格式yymm或yyyymm)  
mysql> select period_diff(9802,199703);    
  -> 11    

date_add(date,interval expr type)  
date_sub(date,interval expr type)    
adddate(date,interval expr type)    
subdate(date,interval expr type)  
对日期时间进行加减法运算  
(adddate()和subdate()是date_add()和date_sub()的同义词,也
可以用运算符+和-而不是函数  
date是一个datetime或date值,expr对date进行加减法的一个表
达式字符串type指明表达式expr应该如何被解释  
 [type值 含义 期望的expr格式]:  
 second 秒 seconds    
 minute 分钟 minutes    
 hour 时间 hours    
 day 天 days    
 month 月 months    
 year 年 years    
 minute_second 分钟和秒 "minutes:seconds"    
 hour_minute 小时和分钟 "hours:minutes"    
 day_hour 天和小时 "days hours"    
 year_month 年和月 "years-months"    
 hour_second 小时, 分钟, "hours:minutes:seconds"    
 day_minute 天, 小时, 分钟 "days hours:minutes"    
 day_second 天, 小时, 分钟, 秒 "days
hours:minutes:seconds" 
 expr中允许任何标点做分隔符,如果所有是date值时结果是一个
date值,否则结果是一个datetime值)  
 如果type关键词不完整,则mysql从右端取值,day_second因为缺
少小时分钟等于minute_second)  
 如果增加month、year_month或year,天数大于结果月份的最大天
数则使用最大天数)    
mysql> select "1997-12-31 23:59:59" + interval 1 second;  

  -> 1998-01-01 00:00:00    
mysql> select interval 1 day + "1997-12-31";    
  -> 1998-01-01    
mysql> select "1998-01-01" - interval 1 second;    
  -> 1997-12-31 23:59:59    
mysql> select date_add("1997-12-31 23:59:59",interval 1
second);    
  -> 1998-01-01 00:00:00    
mysql> select date_add("1997-12-31 23:59:59",interval 1
day);    
  -> 1998-01-01 23:59:59    
mysql> select date_add("1997-12-31 23:59:59",interval
"1:1" minute_second);    
  -> 1998-01-01 00:01:00    
mysql> select date_sub("1998-01-01 00:00:00",interval "1
1:1:1" day_second);    
  -> 1997-12-30 22:58:59    
mysql> select date_add("1998-01-01 00:00:00", interval "-1
10" day_hour);  
  -> 1997-12-30 14:00:00    
mysql> select date_sub("1998-01-02", interval 31 day);    
  -> 1997-12-02    
mysql> select extract(year from "1999-07-02");    
  -> 1999    
mysql> select extract(year_month from "1999-07-02
01:02:03");    
  -> 199907    
mysql> select extract(day_minute from "1999-07-02
01:02:03");    
  -> 20102

to_days(date):返回日期date是西元0年至今多少天(不计算1582年以前) 
select to_days('2018-12-01'); #

from_days(n):给出西元0年至今多少天返回date值(不计算1582年以前)

date_format(date,format):
根据format字符串格式化date值  
 (在format字符串中可用标志符:  
 %m 月名字(january……december)    
 %w 星期名字(sunday……saturday)    
 %d 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)    
 %y 年, 数字, 4 位    
 %y 年, 数字, 2 位    
 %a 缩写的星期名字(sun……sat)    
 %d 月份中的天数, 数字(00……31)    
 %e 月份中的天数, 数字(0……31)    
 %m 月, 数字(01……12)    
 %c 月, 数字(1……12)    
 %b 缩写的月份名字(jan……dec)    
 %j 一年中的天数(001……366)    
 %h 小时(00……23)    
 %k 小时(0……23)    
 %h 小时(01……12)    
 %i 小时(01……12)    
 %l 小时(1……12)    
 %i 分钟, 数字(00……59)    
 %r 时间,12 小时(hh:mm:ss [ap]m)    
 %t 时间,24 小时(hh:mm:ss)    
 %s 秒(00……59)    
 %s 秒(00……59)    
 %p am或pm    
 %w 一个星期中的天数(0=sunday ……6=saturday )    
 %u 星期(0……52), 这里星期天是星期的第一天    
 %u 星期(0……52), 这里星期一是星期的第一天    
 %% 字符% )  


time_format(time,format):  和date_format()类似,但time_format只处理小时、分钟和秒(其余符号产生一个null值或0)
select time_format('12:00:00' ,'%H-%d-%s')

curdate()
current_date():以'yyyy-mm-dd'或yyyymmdd格式返回当前日期值(根据返回值所处上下文是字符串或数字)
select current_date();

curtime()
current_time():以'hh:mm:ss'或hhmmss格式返回当前时间值(根据返回值所处上下文是字符串或数字)
select current_time() #获取当前的时间值

now()    
sysdate()    
current_timestamp():以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回当前日期时间(根据返回值所处上下文是字符串或数字
select now(); #获取系统时间

unix_timestamp(date):返回一个unix时间戳(从'1970-01-01 00:00:00'gmt开始的秒数,date默认值为当前时间)
select unix_timestamp('2018-12-12 12:00:00') #返回时间戳1544587200

from_unixtime(unix_timestamp,format):以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回时间戳的值(根据返回值所处上下文是字符串或数字)
select from_unixtime('1544587200') #2018-12-12 12:00:00

sec_to_time(seconds):以'hh:mm:ss'或hhmmss格式返回秒数转成的time值(根据返回值所处上下文是字符串或数字) 
select sec_to_time(1000) #00:16:40

time_to_sec(time):返回time值有多少秒
select time_to_sec('00:16:40')  #1000

cast:转换函数
select cast(1 as decimal)


--------------------- 
作者:wx_411180165 
来源:CSDN 
原文:https://blog.csdn.net/qq_24726509/article/details/85247688 
版权声明:本文为博主原创文章,转载请附上博文链接!
 

发布了476 篇原创文章 · 获赞 2 · 访问量 10万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览