MySQL常用函数有哪些总结?

2026-05-17 00:401阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3441个文字,预计阅读时间需要14分钟。

MySQL常用函数有哪些总结?

前言:在当今的工作中,我们开发人员经常会利用SQL脚本操作不同数据库。现在,我将总结MySQL中常用的函数,结合自身体验和工作资料进行查阅。

总结:MySQL的常用函数有字符串处理、日期和时间、数学计算、聚合函数等。以下是一些示例:

1. 字符串处理:CONCAT、LOWER、UPPER、LENGTH、SUBSTRING。

2.日期和时间:NOW、CURDATE、YEAR、MONTH、DAY、DATE_FORMAT。

MySQL常用函数有哪些总结?

3.数学计算:ROUND、ABS、POW、MOD。

4.聚合函数:SUM、AVG、COUNT、MAX、MIN。

请注意,以上仅为部分常用函数,实际应用中还需结合具体需求进行选择。如有不足之处,欢迎批阅指正。

前言

在平时的工作中,我们开发人员经常会利用sql脚本操作不同数据库,现在我将Mysql的常用的函数根据自己平时工作和查阅其他资料结果进行总结,有不到的地方敬请批评指正;后面我也会一直持续更新并且与大家共勉!!!

1.聚集函数

聚集函数用于汇集记录(比如不想知道每条学生记录的确切信息,只想知道学生记录数量,可以使用count())。 聚集函数就是用来处理“汇集数据”的,不要求了解详细的记录信息。 聚集函数(aggregate function) 运行在行组上,计算和返回单个值的函数。

  • 实验表数据(下面的运行数据基于这个表):

create table student( name varchar(15), gender varchar(15), age int); insert into student values("lilei","male",18); insert into student values("alex","male",17); insert into student values("jack","male",20); insert into student values("john","male",19); insert into student values("nullpeople","male",null); (1) avg(字段)函数

返回指定字段的数据的平均值 avg() 通过对表中行数计数并计算指定字段的数据总和,求得该字段的平均值。 select avg(age) as "年龄平均值" from student where gender = 'male'; avg() 函数忽略列值为 NULL 的行,如果某行指定字段为null,那么不算这一行。 (2) count(字段)函数

返回指定字段的数据的行数(记录的数量) 字段可以为"*",为*时代表所有记录数,与字段数不同的时,记录数包括某些字段为null的记录,而字段数不包括为null的记录 select count(age) as "男生填了年龄的数量" from student where gender = 'male'; select count(*) as "男生的数量" from student where gender = 'male'; (3) max(字段)函数

返回指定字段的数据的最大值 select max(age) as "年龄最大值" from student where gender = 'male'; 如果指定字段的数据类型为字符串类型,先按字符串比较,然后返回最大值。 max() 函数忽略列值为 null的行 (4) min(字段)函数

返回指定字段的数据的最小值 select min(age) as "年龄最小值" from student where gender = 'male'; 如果指定字段的数据类型为字符串类型,先按字符串比较,然后返回最小值。 min()函数忽略列值为 null的行 (5) sum(字段)函数

返回指定字段的数据之和 select sum(age) as "年龄总和值" from student where gender = 'male'; sum()函数忽略列值为 null的行 (6) 补充

聚集函数的字段如果的数据为null,则忽略值为null的记录。 例如:avg有5行,但是只有四行的年龄数据,计算结果只算四行的, 但是如果不针对字段,那么会计算,比如count(x)是计算记录数的,null值不影响结果。 还有一些标准偏差聚集函数,这里不讲述,想了解更多的可以百度。 聚集函数在5.0+版本上还有一个选项DISTINCT,与select中类似,就是忽视同样的字段。 select avg(distinct age) as "年龄平均值" from student where gender = 'male'; 2.用于处理字符串的函数 (1) 合并字符串函数 concat(str1,str2,str3…)

用于将多个字符串合并成一个字符串,如果传入的值中有null,那么最终结果是null 如果想要在多个字符串合并结果中将每个字符串都分隔一下,可以使用concat_ws(分隔符,str1,str2,str3…),如果传入的分隔符为null,那么最终结果是null(不过这时候如果str有为null不影响结 果) select concat("i","am","superman"); select concat_ws(" ","i","am","superman"); (2) 比较字符串大小函数:strcmp(str1,str2)

用于比较两个字符串的大小。左大于右时返回1,左等于右时返回0,,左小于于右时返回-1, strcmp类似编程语言中的比较字符串函数(依据ascll码?),会从左到右逐个比较,直到有一个不等就返回结果,否则比较到结尾。 select strcmp ("a","b"); select strcmp ("ab","ac"); select strcmp ("d","a"); select strcmp ("a","a"); (3) 获取字符串字节数函数 length(str)

用于获取字符串字节长度(返回字节数,因此要注意字符集) select length("abcd"); (4) 获取字符串字符数函数:char_length(str)

用于获取字符串长度 select char_length("abcd"); (5) 字母大小写转换函数:大写:upper(x),ucase(x);小写lower(x),lcase(x)

upper(x),ucase(x)用于将字母转成大写,x可以是单个字母也可以是字符串 select upper("a"); lower(x),lcase(x)用于将字母转成小写,x可以是单个字母也可以是字符串 对于已经是了的,不会进行大小写转换 (6) 字符串查找函数

find_in_set(str1,str2) 返回字符串str1在str2中的位置,str2包含若干个以逗号分隔的字符串(可以把str2看出一个列表,元素是多个字符串,查找结果是str1在str2这个列表中的索引位置,从1开始) select find_in_set("abc","123,456,abc"); field(str,str1,str2,str3…) 与find_in_set类似,但str2由一个类似列表的字符串变成了多个字符串,返回str在str1,str2,str3…中的位置。 select field("abc","123","456","abc"); locate(str1,str2): 返回子串str1在字符串str2中的位置 select locate("a","123a123"); position(str1 IN str2) 返回子串str1在字符串str2中的位置 select position("a" IN "123a123"); instr(str1,str2) 返回子串str2在字符串str1中的位置 select instr("123a123","a"); (7) 获取指定位置的子串

elt(index,str1,str2,str3…) 返回指定index位置的字符串 select elt(1,"a","b","c"); left(str,n) 截取str左边n个字符 select left("superman",5); right(str,n) 截取str右边n个字符 select right("superman",3); substring(str,index,len) 从str的index位置截取len个字符 select substring("iamsuperman",4,5); (8) 字符串去空函数

ltrim(str): 去除字符串str左边的空格 select ltrim(" hello world"); rtrim(str) * 去除字符串str右边的空格 select rtrim("hello world "); trim() 去除字符串str两边的空格 select rtrim(" hello world "); (9) 字符串替换函数

insert(str1,index,len,str2) 使用str2从str1的index位置替换str1的len个元素 select insert("hello world",7,5,"amy"); replace(str,str1,str2) 将str中的子串str1全部替换成str2 select replace("hello admin","admin","amy"); (10) 用于处理数值的函数

绝对值函数:abs(x) 返回x的绝对值 向上取整函数:ceil(x) 返回x的向上取整的整数 向下取整函数:floor(x) 向下取整函数:floor(x) 取模函数:mod(x,y) 返回x mod y的结果 随机数函数:rand() 返回0-1内的随机数 如果想对某种情况都使用同一随机值,可以使用rand(x),x相同时返回同样的随机结果 四舍五入函数:round(x,y) 四舍五入函数:round(x,y) select round("3.1415926",3); 数值截取函数:truncate(x,y) 返回数值x截取y位小数的结果(不四舍五入) select truncate("3.1415926",3); 3.用于处理时间日期的函数

获取当前日期:curdate(),current_date() select curdate(); 获取当前时间:curtime(),current_time() select curtime(); 获取当前日期时间:now() select now(); 从日期中选择出月份数:month(date),monthname(date) select month(curdate()),monthname(curdate()); 从日期中选择出周数:week(date) select week(curdate()); 从日期中选择出年份:year(date) select year(curdate()); 从时间中选择出小时数:hour(time) select hour(curtime()); 从时间中选择出分钟数:minute(time) select minute(curtime()); 从时间中选择出今天是周几:weekday(date),dayname(date) select weekday(curdate()),dayname(curdate()); (1) DATEDIFF() 函数

DATEDIFF() 函数返回两个日期之间的天数 SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate (2) DATE_FORMAT() 函数

DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据;date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式 date 参数是合法的日期。format 规定日期/时间的输出格式 DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p') DATE_FORMAT(NOW(),'%m-%d-%Y') DATE_FORMAT(NOW(),'%d %b %y') DATE_FORMAT(NOW(),'%d %b %Y %T:%f') DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S') 格式为:"2022-03-21 06:36:25" (3) MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format)

select str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09 select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09 select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09 select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30 select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2008-08-09 08:09:30 可以看到,str_to_date(str,format) 转换函数,可以把一些杂乱无章的字符串转换为日期格式。另外,它也可以转换为时间。 (4) MySQL (日期、天数)转换函数:to_days(date), from_days(days)

select to_days('0000-00-00'); -- 0 select to_days('2008-08-08'); -- 733627 (5) MySQL (时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)

select time_to_sec('01:00:05'); -- 3605 select sec_to_time(3605); -- '01:00:05' (6) MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)

select makedate(2001,31); -- '2001-01-31' select makedate(2001,32); -- '2001-02-01' select maketime(12,15,30); -- '12:15:30' (7) MySQL (Unix 时间戳、日期)转换函数

unix_timestamp(), unix_timestamp(date), from_unixtime(unix_timestamp), from_unixtime(unix_timestamp,format)

示例: select unix_timestamp(); -- 1218290027 select unix_timestamp('2008-08-08'); -- 1218124800 select unix_timestamp('2008-08-08 12:30:00'); -- 1218169800 select from_unixtime(1218290027); -- '2008-08-09 21:53:47' select from_unixtime(1218124800); -- '2008-08-08 00:00:00' select from_unixtime(1218169800); -- '2008-08-08 12:30:00' select from_unixtime(1218169800, '%Y %D %M %h:%i:%s %x'); -- '2008 8th August 12:30:00 2008' (8) MySQL 为日期增加一个时间间隔:date_add()

set @dt = now(); select date_add(@dt, interval 1 day); -- add 1 day select date_add(@dt, interval 1 hour); -- add 1 hour select date_add(@dt, interval 1 minute); -- ... select date_add(@dt, interval 1 second); select date_add(@dt, interval 1 microsecond); select date_add(@dt, interval 1 week); select date_add(@dt, interval 1 month); select date_add(@dt, interval 1 quarter); select date_add(@dt, interval 1 year); select date_add(@dt, interval -1 day); -- sub 1 day (9) MySQL adddate(), addtime()函数,可以用 date_add() 来替代。下面是 date_add() 实现 addtime() 功能示例:

mysql> set @dt = '2008-08-09 12:12:33'; mysql> mysql> select date_add(@dt, interval '01:15:30' hour_second); +------------------------------------------------+ | date_add(@dt, interval '01:15:30' hour_second) | +------------------------------------------------+ | 2008-08-09 13:28:03 | +------------------------------------------------+ mysql> select date_add(@dt, interval '1 01:15:30' day_second); +-------------------------------------------------+ | date_add(@dt, interval '1 01:15:30' day_second) | +-------------------------------------------------+ | 2008-08-10 13:28:03 | +-------------------------------------------------+ (10) MySQL 为日期减去一个时间间隔:date_sub()

mysql> select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second); +----------------------------------------------------------------+ | date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second) | +----------------------------------------------------------------+ | 1997-12-30 22:58:59 | +----------------------------------------------------------------+ (11) MySQL 日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)

MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。 select datediff('2008-08-08', '2008-08-01'); -- 7 select datediff('2008-08-01', '2008-08-08'); -- -7 MySQL timediff(time1,time2):两个日期相减 time1 - time2,返回 time 差值。 select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); -- 08:08:08 select timediff('08:08:08', '00:00:00'); -- 08:08:08 注意:timediff(time1,time2) 函数的两个参数类型必须相同。 (12) MySQL 时间戳(timestamp)转换、增、减函数:

timestamp(date) -- date to timestamp timestamp(dt,time) -- dt + time timestampadd(unit,interval,datetime_expr) -- timestampdiff(unit,datetime_expr1,datetime_expr2) -- 请看示例部分: select timestamp('2008-08-08'); -- 2008-08-08 00:00:00 select timestamp('2008-08-08 08:00:00', '01:01:01'); -- 2008-08-08 09:01:01 select timestamp('2008-08-08 08:00:00', '10 01:01:01'); -- 2008-08-18 09:01:01 select timestampadd(day, 1, '2008-08-08 08:00:00'); -- 2008-08-09 08:00:00 select date_add('2008-08-08 08:00:00', interval 1 day); -- 2008-08-09 08:00:00 MySQL timestampadd() 函数类似于 date_add()。 select timestampdiff(year,'2002-05-01','2001-01-01'); -- -1 select timestampdiff(day ,'2002-05-01','2001-01-01'); -- -485 select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00'); -- -12 select datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00'); -- 7 MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。 (13) MySQL 时区(timezone)转换函数

convert_tz(dt,from_tz,to_tz) select convert_tz('2008-08-08 12:00:00', '+08:00', '+00:00'); -- 2008-08-08 04:00:00 时区转换也可以通过 date_add, date_sub, timestampadd 来实现。 select date_add('2008-08-08 12:00:00', interval -8 hour); -- 2008-08-08 04:00:00 select date_sub('2008-08-08 12:00:00', interval 8 hour); -- 2008-08-08 04:00:00 select timestampadd(hour, -8, '2008-08-08 12:00:00'); -- 2008-08-08 04:00:00 4.MySQL CAST与CONVERT 函数的用法

MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下: sql语法: CAST(value as type); CONVERT(value, type); 就是CAST(xxx AS 类型), CONVERT(xxx,类型)。 可以转换的类型是有限制的。这个类型可以是以下值其中的一个: 二进制,同带binary前缀的效果 : BINARY 字符型,可带参数 : CHAR() 日期 : DATE 时间: TIME 日期时间型 : DATETIME 浮点数 : DECIMAL 整数 : SIGNED 无符号整数 : UNSIGNED 下面举几个例子: 例一 mysql> SELECT CONVERT('23',SIGNED); +----------------------+ | CONVERT('23',SIGNED) | +----------------------+ | 23 | +----------------------+ 例二 mysql> SELECT CAST('125e342.83' AS signed); +------------------------------+ | CAST('125e342.83' AS signed) | +------------------------------+ | 125 | +------------------------------+ 例三 mysql> SELECT CAST('3.35' AS signed); +------------------------+ | CAST('3.35' AS signed) | +------------------------+ | 3 | +------------------------+ 像上面例子一样,将varchar 转为int 用 cast(a as signed),其中a为varchar类型的字符串。 古今成大事者,不唯有超世之才,必有坚韧不拔之志!

标签:工作中

本文共计3441个文字,预计阅读时间需要14分钟。

MySQL常用函数有哪些总结?

前言:在当今的工作中,我们开发人员经常会利用SQL脚本操作不同数据库。现在,我将总结MySQL中常用的函数,结合自身体验和工作资料进行查阅。

总结:MySQL的常用函数有字符串处理、日期和时间、数学计算、聚合函数等。以下是一些示例:

1. 字符串处理:CONCAT、LOWER、UPPER、LENGTH、SUBSTRING。

2.日期和时间:NOW、CURDATE、YEAR、MONTH、DAY、DATE_FORMAT。

MySQL常用函数有哪些总结?

3.数学计算:ROUND、ABS、POW、MOD。

4.聚合函数:SUM、AVG、COUNT、MAX、MIN。

请注意,以上仅为部分常用函数,实际应用中还需结合具体需求进行选择。如有不足之处,欢迎批阅指正。

前言

在平时的工作中,我们开发人员经常会利用sql脚本操作不同数据库,现在我将Mysql的常用的函数根据自己平时工作和查阅其他资料结果进行总结,有不到的地方敬请批评指正;后面我也会一直持续更新并且与大家共勉!!!

1.聚集函数

聚集函数用于汇集记录(比如不想知道每条学生记录的确切信息,只想知道学生记录数量,可以使用count())。 聚集函数就是用来处理“汇集数据”的,不要求了解详细的记录信息。 聚集函数(aggregate function) 运行在行组上,计算和返回单个值的函数。

  • 实验表数据(下面的运行数据基于这个表):

create table student( name varchar(15), gender varchar(15), age int); insert into student values("lilei","male",18); insert into student values("alex","male",17); insert into student values("jack","male",20); insert into student values("john","male",19); insert into student values("nullpeople","male",null); (1) avg(字段)函数

返回指定字段的数据的平均值 avg() 通过对表中行数计数并计算指定字段的数据总和,求得该字段的平均值。 select avg(age) as "年龄平均值" from student where gender = 'male'; avg() 函数忽略列值为 NULL 的行,如果某行指定字段为null,那么不算这一行。 (2) count(字段)函数

返回指定字段的数据的行数(记录的数量) 字段可以为"*",为*时代表所有记录数,与字段数不同的时,记录数包括某些字段为null的记录,而字段数不包括为null的记录 select count(age) as "男生填了年龄的数量" from student where gender = 'male'; select count(*) as "男生的数量" from student where gender = 'male'; (3) max(字段)函数

返回指定字段的数据的最大值 select max(age) as "年龄最大值" from student where gender = 'male'; 如果指定字段的数据类型为字符串类型,先按字符串比较,然后返回最大值。 max() 函数忽略列值为 null的行 (4) min(字段)函数

返回指定字段的数据的最小值 select min(age) as "年龄最小值" from student where gender = 'male'; 如果指定字段的数据类型为字符串类型,先按字符串比较,然后返回最小值。 min()函数忽略列值为 null的行 (5) sum(字段)函数

返回指定字段的数据之和 select sum(age) as "年龄总和值" from student where gender = 'male'; sum()函数忽略列值为 null的行 (6) 补充

聚集函数的字段如果的数据为null,则忽略值为null的记录。 例如:avg有5行,但是只有四行的年龄数据,计算结果只算四行的, 但是如果不针对字段,那么会计算,比如count(x)是计算记录数的,null值不影响结果。 还有一些标准偏差聚集函数,这里不讲述,想了解更多的可以百度。 聚集函数在5.0+版本上还有一个选项DISTINCT,与select中类似,就是忽视同样的字段。 select avg(distinct age) as "年龄平均值" from student where gender = 'male'; 2.用于处理字符串的函数 (1) 合并字符串函数 concat(str1,str2,str3…)

用于将多个字符串合并成一个字符串,如果传入的值中有null,那么最终结果是null 如果想要在多个字符串合并结果中将每个字符串都分隔一下,可以使用concat_ws(分隔符,str1,str2,str3…),如果传入的分隔符为null,那么最终结果是null(不过这时候如果str有为null不影响结 果) select concat("i","am","superman"); select concat_ws(" ","i","am","superman"); (2) 比较字符串大小函数:strcmp(str1,str2)

用于比较两个字符串的大小。左大于右时返回1,左等于右时返回0,,左小于于右时返回-1, strcmp类似编程语言中的比较字符串函数(依据ascll码?),会从左到右逐个比较,直到有一个不等就返回结果,否则比较到结尾。 select strcmp ("a","b"); select strcmp ("ab","ac"); select strcmp ("d","a"); select strcmp ("a","a"); (3) 获取字符串字节数函数 length(str)

用于获取字符串字节长度(返回字节数,因此要注意字符集) select length("abcd"); (4) 获取字符串字符数函数:char_length(str)

用于获取字符串长度 select char_length("abcd"); (5) 字母大小写转换函数:大写:upper(x),ucase(x);小写lower(x),lcase(x)

upper(x),ucase(x)用于将字母转成大写,x可以是单个字母也可以是字符串 select upper("a"); lower(x),lcase(x)用于将字母转成小写,x可以是单个字母也可以是字符串 对于已经是了的,不会进行大小写转换 (6) 字符串查找函数

find_in_set(str1,str2) 返回字符串str1在str2中的位置,str2包含若干个以逗号分隔的字符串(可以把str2看出一个列表,元素是多个字符串,查找结果是str1在str2这个列表中的索引位置,从1开始) select find_in_set("abc","123,456,abc"); field(str,str1,str2,str3…) 与find_in_set类似,但str2由一个类似列表的字符串变成了多个字符串,返回str在str1,str2,str3…中的位置。 select field("abc","123","456","abc"); locate(str1,str2): 返回子串str1在字符串str2中的位置 select locate("a","123a123"); position(str1 IN str2) 返回子串str1在字符串str2中的位置 select position("a" IN "123a123"); instr(str1,str2) 返回子串str2在字符串str1中的位置 select instr("123a123","a"); (7) 获取指定位置的子串

elt(index,str1,str2,str3…) 返回指定index位置的字符串 select elt(1,"a","b","c"); left(str,n) 截取str左边n个字符 select left("superman",5); right(str,n) 截取str右边n个字符 select right("superman",3); substring(str,index,len) 从str的index位置截取len个字符 select substring("iamsuperman",4,5); (8) 字符串去空函数

ltrim(str): 去除字符串str左边的空格 select ltrim(" hello world"); rtrim(str) * 去除字符串str右边的空格 select rtrim("hello world "); trim() 去除字符串str两边的空格 select rtrim(" hello world "); (9) 字符串替换函数

insert(str1,index,len,str2) 使用str2从str1的index位置替换str1的len个元素 select insert("hello world",7,5,"amy"); replace(str,str1,str2) 将str中的子串str1全部替换成str2 select replace("hello admin","admin","amy"); (10) 用于处理数值的函数

绝对值函数:abs(x) 返回x的绝对值 向上取整函数:ceil(x) 返回x的向上取整的整数 向下取整函数:floor(x) 向下取整函数:floor(x) 取模函数:mod(x,y) 返回x mod y的结果 随机数函数:rand() 返回0-1内的随机数 如果想对某种情况都使用同一随机值,可以使用rand(x),x相同时返回同样的随机结果 四舍五入函数:round(x,y) 四舍五入函数:round(x,y) select round("3.1415926",3); 数值截取函数:truncate(x,y) 返回数值x截取y位小数的结果(不四舍五入) select truncate("3.1415926",3); 3.用于处理时间日期的函数

获取当前日期:curdate(),current_date() select curdate(); 获取当前时间:curtime(),current_time() select curtime(); 获取当前日期时间:now() select now(); 从日期中选择出月份数:month(date),monthname(date) select month(curdate()),monthname(curdate()); 从日期中选择出周数:week(date) select week(curdate()); 从日期中选择出年份:year(date) select year(curdate()); 从时间中选择出小时数:hour(time) select hour(curtime()); 从时间中选择出分钟数:minute(time) select minute(curtime()); 从时间中选择出今天是周几:weekday(date),dayname(date) select weekday(curdate()),dayname(curdate()); (1) DATEDIFF() 函数

DATEDIFF() 函数返回两个日期之间的天数 SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate (2) DATE_FORMAT() 函数

DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据;date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式 date 参数是合法的日期。format 规定日期/时间的输出格式 DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p') DATE_FORMAT(NOW(),'%m-%d-%Y') DATE_FORMAT(NOW(),'%d %b %y') DATE_FORMAT(NOW(),'%d %b %Y %T:%f') DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S') 格式为:"2022-03-21 06:36:25" (3) MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format)

select str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09 select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09 select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09 select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30 select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2008-08-09 08:09:30 可以看到,str_to_date(str,format) 转换函数,可以把一些杂乱无章的字符串转换为日期格式。另外,它也可以转换为时间。 (4) MySQL (日期、天数)转换函数:to_days(date), from_days(days)

select to_days('0000-00-00'); -- 0 select to_days('2008-08-08'); -- 733627 (5) MySQL (时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)

select time_to_sec('01:00:05'); -- 3605 select sec_to_time(3605); -- '01:00:05' (6) MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)

select makedate(2001,31); -- '2001-01-31' select makedate(2001,32); -- '2001-02-01' select maketime(12,15,30); -- '12:15:30' (7) MySQL (Unix 时间戳、日期)转换函数

unix_timestamp(), unix_timestamp(date), from_unixtime(unix_timestamp), from_unixtime(unix_timestamp,format)

示例: select unix_timestamp(); -- 1218290027 select unix_timestamp('2008-08-08'); -- 1218124800 select unix_timestamp('2008-08-08 12:30:00'); -- 1218169800 select from_unixtime(1218290027); -- '2008-08-09 21:53:47' select from_unixtime(1218124800); -- '2008-08-08 00:00:00' select from_unixtime(1218169800); -- '2008-08-08 12:30:00' select from_unixtime(1218169800, '%Y %D %M %h:%i:%s %x'); -- '2008 8th August 12:30:00 2008' (8) MySQL 为日期增加一个时间间隔:date_add()

set @dt = now(); select date_add(@dt, interval 1 day); -- add 1 day select date_add(@dt, interval 1 hour); -- add 1 hour select date_add(@dt, interval 1 minute); -- ... select date_add(@dt, interval 1 second); select date_add(@dt, interval 1 microsecond); select date_add(@dt, interval 1 week); select date_add(@dt, interval 1 month); select date_add(@dt, interval 1 quarter); select date_add(@dt, interval 1 year); select date_add(@dt, interval -1 day); -- sub 1 day (9) MySQL adddate(), addtime()函数,可以用 date_add() 来替代。下面是 date_add() 实现 addtime() 功能示例:

mysql> set @dt = '2008-08-09 12:12:33'; mysql> mysql> select date_add(@dt, interval '01:15:30' hour_second); +------------------------------------------------+ | date_add(@dt, interval '01:15:30' hour_second) | +------------------------------------------------+ | 2008-08-09 13:28:03 | +------------------------------------------------+ mysql> select date_add(@dt, interval '1 01:15:30' day_second); +-------------------------------------------------+ | date_add(@dt, interval '1 01:15:30' day_second) | +-------------------------------------------------+ | 2008-08-10 13:28:03 | +-------------------------------------------------+ (10) MySQL 为日期减去一个时间间隔:date_sub()

mysql> select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second); +----------------------------------------------------------------+ | date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second) | +----------------------------------------------------------------+ | 1997-12-30 22:58:59 | +----------------------------------------------------------------+ (11) MySQL 日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)

MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。 select datediff('2008-08-08', '2008-08-01'); -- 7 select datediff('2008-08-01', '2008-08-08'); -- -7 MySQL timediff(time1,time2):两个日期相减 time1 - time2,返回 time 差值。 select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); -- 08:08:08 select timediff('08:08:08', '00:00:00'); -- 08:08:08 注意:timediff(time1,time2) 函数的两个参数类型必须相同。 (12) MySQL 时间戳(timestamp)转换、增、减函数:

timestamp(date) -- date to timestamp timestamp(dt,time) -- dt + time timestampadd(unit,interval,datetime_expr) -- timestampdiff(unit,datetime_expr1,datetime_expr2) -- 请看示例部分: select timestamp('2008-08-08'); -- 2008-08-08 00:00:00 select timestamp('2008-08-08 08:00:00', '01:01:01'); -- 2008-08-08 09:01:01 select timestamp('2008-08-08 08:00:00', '10 01:01:01'); -- 2008-08-18 09:01:01 select timestampadd(day, 1, '2008-08-08 08:00:00'); -- 2008-08-09 08:00:00 select date_add('2008-08-08 08:00:00', interval 1 day); -- 2008-08-09 08:00:00 MySQL timestampadd() 函数类似于 date_add()。 select timestampdiff(year,'2002-05-01','2001-01-01'); -- -1 select timestampdiff(day ,'2002-05-01','2001-01-01'); -- -485 select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00'); -- -12 select datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00'); -- 7 MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。 (13) MySQL 时区(timezone)转换函数

convert_tz(dt,from_tz,to_tz) select convert_tz('2008-08-08 12:00:00', '+08:00', '+00:00'); -- 2008-08-08 04:00:00 时区转换也可以通过 date_add, date_sub, timestampadd 来实现。 select date_add('2008-08-08 12:00:00', interval -8 hour); -- 2008-08-08 04:00:00 select date_sub('2008-08-08 12:00:00', interval 8 hour); -- 2008-08-08 04:00:00 select timestampadd(hour, -8, '2008-08-08 12:00:00'); -- 2008-08-08 04:00:00 4.MySQL CAST与CONVERT 函数的用法

MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下: sql语法: CAST(value as type); CONVERT(value, type); 就是CAST(xxx AS 类型), CONVERT(xxx,类型)。 可以转换的类型是有限制的。这个类型可以是以下值其中的一个: 二进制,同带binary前缀的效果 : BINARY 字符型,可带参数 : CHAR() 日期 : DATE 时间: TIME 日期时间型 : DATETIME 浮点数 : DECIMAL 整数 : SIGNED 无符号整数 : UNSIGNED 下面举几个例子: 例一 mysql> SELECT CONVERT('23',SIGNED); +----------------------+ | CONVERT('23',SIGNED) | +----------------------+ | 23 | +----------------------+ 例二 mysql> SELECT CAST('125e342.83' AS signed); +------------------------------+ | CAST('125e342.83' AS signed) | +------------------------------+ | 125 | +------------------------------+ 例三 mysql> SELECT CAST('3.35' AS signed); +------------------------+ | CAST('3.35' AS signed) | +------------------------+ | 3 | +------------------------+ 像上面例子一样,将varchar 转为int 用 cast(a as signed),其中a为varchar类型的字符串。 古今成大事者,不唯有超世之才,必有坚韧不拔之志!

标签:工作中