mysql常用函数

目录

    • 时间函数
    • 字符串函数
    • 数值函数

时间函数

--时间函数
  NOW()/ CURRENT_TIMESTAMP()   						--当前日期时间
  CURRENT_DATE()/curdate()                      	--当前日期
  CURRENT_TIME()                      				--当前时间
  
  UNIX_TIMESTAMP()                   				 --当前时间戳
  FROM_UNIXTIME(UNIX_TIMESTAMP())    				 --时间戳转化日期时间
  UNIX_TIMESTAMP('2020-01-01')       	 			--日期转化时间戳
  
  weekday('2020-01-01')								--返回星期几(0-6)
  week('2020-01-01')								--返回一年的第几周
  dayofyear('2020-01-01')							--返回一年的第几天
  
  DATE_FORMAT('2021-01-01 08:30:50','%Y-%m-%d %H:%i:%s')		 --日期时间转化字符串
  str_to_date('2021-01-01 08:30:50','%Y-%m-%d %H:%i:%s')		 --字符串转化日期
  
  --类型包括hour,minute,second,year,month,day,
  --year_month,day_hour,day_minute,day_second,hour_minute,hour_second,minute_second
  --复杂类型的需要将日期改为'1_1'
  DATE_ADD('2021-02-02',INTERVAL 1 day) 			--在这个日期的基础上加一天
  DATE_SUB('2021-02-02',INTERVAL 1 day) 			--在这个日期的基础上减一天
  DATEDIFF('2021-01-02','2021-01-01')   			--得出2个日期之间的天数
  TIMESTAMPDIFF(hour, '2021-01-01 08:30:00', '2021-01-02 10:30:00') --得出具体的时间差
  
  --常用日期
 	 --获取本月的第一天
select date_add(curdate(),interval -day(curdate())+1 day) 
 	 --返回所在月份的最后一天
  last_day('2020-01-01')						
 	--返回当月天数
  select DATEDIFF(date_add(curdate()-day(curdate())+1,interval 1 month ),DATE_ADD(curdate(),interval -day(curdate())+1 day)) from dual						--获取下个月的第一天
select date_add(curdate() - day(curdate()) +1,interval 1 month );
	--上个月的第一天
select date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract(
day from now())-1 day),interval 1 month)
	--上个月的最后一天
select date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract(
day from now()) day),interval 0 month) 
	--下月第一天
select date_add(curdate()-day(curdate())+1,interval 1 month);
	--下月最后一天
select last_day(date_sub(now(),interval -1 month));

字符串函数

--mysql的索引是从1开始的
ascii(x)						--返回第一个字符串中ascii值
strcmp(x,y)						--比较x和y的ascii大小,大为1,小为-1
char_length(x)   				--字符串x长度
concat(x1,x2)      				--拼接成一个字符串
insert(x,index,len,y)  			--将x从第index位置开始,将len长度的字符串替换为y
replace(x,a,b)					--将x中出现a的字符串,替换成b
lower        					--转小写
upper         					--转大写
left(x,n)						--返回x最左边的n个字符
right(x,n)						--返回x最右边的n个字符
lpad(x,len,y)					--用y填充x的左边,知道len长度为止
rpad(x,len,y)					--用y填充x的右边,知道len长度为止
trim(x)							--去除x左侧和右侧的空格
trim(x from y)					--字符串y的左右侧存在字符串x则去除
repeat(x,n)						--返回字符串x重复n次的结果
space(n)						--返回n个空格
instr(x,y)/locate(x,y)  		--返回x中第一次出现y的位置,未找到返回0
substring(x,index,len)			--截取x中第index位len长度的字符串
substring_index(x,y,index)		--截取x中第index出现y之前的数据,如果是负数则从右边开始
elt(n,x1,x2...)					--返回字符串列表中第n个字符串
field(x,x1,x2...)				--返回字符串列表中x第一次出现的位置
find_in_set(x,y)				--返回字符串列表y中x第一次出现的位置,y中的列表用,隔开
reverse(x)						--将字符串x反转

数值函数

--sql数字关键字
abs(x)                --返回x的绝对值
sign(x)               --返回x的符号,正数1,负数-1,0返回0
pi()                  --圆周率
ceil(x)/ceiling(x)    --向上取整
floor()               --向下取整
round(x,y)			  --四舍五入,保留y位小数
least(x,y)            --返回列表中的最小值
greatest(x,y)         --返回列表中的最大值
mod(x,y)			  --返回x除以y后的余数
rand()                --0-1随机数
truncate(x,y)		  --返回x,保留y位小数
sqrt(x)				  --返回x的平方根,x为负数返回null

--角度与弧度互换
radians(x)			--将角度转化为弧度
degrees(x)			--将弧度转化为角度

--三角函数
sin(x)				--返回x的正弦
asin(x)				--返回x的反正弦,绝对值大于1返回null
cos(x)				--返回x的余弦
acos(x)				--返回x的反余弦,绝对值大于1返回null
tan(x)				--返回x的正切
atanx(x)			--返回正切值为x的值
atan2(x,y)			--返回两个参数的反正切
cot(x)				--返回x的余切

你可能感兴趣的:(mysql,数据库)