字符串:
字符串转数字: 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
版权声明:本文为博主原创文章,转载请附上博文链接!
mysql常用函数
最新推荐文章于 2024-04-27 22:38:41 发布