mysql 日期函数 字符串函数_MySQL数据库学习笔记(五)----MySQL字符串函数、日期时间函数...

一、常见字符串函数:

1、CHAR_LENGTH  获取长度(字符为单位)

2、FORMAT  格式化

3、INSERT  替换的方式插入

4、INSTR  获取位置

5、LEFT/RIGHT  取左、取右

6、LENGTH   获取长度(字节为单位)

7、LTRIM/RTRIM/TRIM 去空格(左/右/自定义)

8、STRCMP  字符串比较

9、CONCAT  字符串拼接

10、SUBSTRING  字符串截取

1、CHAR_LENGTH:获取长度(字符为单位)

CHAR_LENGTH(str)

解释:返回值为字符串str的长度,计算的单位为字符(一个中文也算一个字符)

举例:

f21a9fa3135116c515a901acd228e0aa.png

如果是查询已知表格里的字段长度,可以这样写:

7bd71b2fd3aa4da5ed2b9957150f5050.png

2、FORMAT:

FORMAT(X,D)

解释:将数字X的格式写为'#,###,###.##',以四舍五入的方式保留小数点后D位,并将结果以字符串的形式返回。若D为0, 则返回结果不带有小数点,或不含小数部分。

举例:

582ec28fa7dfb7c0c735f00d0801191b.png

3、INSERT:替换的方式插入

INSERT (str,pos,len,newstr)

解释:返回字符串str,从原str的pos位置开始,用字符串newstr来替换,替换的长度为len。

如果pos超过字符串长度,则返回值为原始字符串。假如len的长度超过后面字符串的长度,则从位置pos开始替换到字符串的结尾即可。

四个参数中若任何一个参数为的值为null,则整个函数的返回值为NULL。

举例:将smyh001替换为smyh002

dd9b2576697f1432c10dbd5eac945252.png

4、INSTR:查找子字符串的位置

INSTR(str,substr)

解释:返回字符串str中首次出现子字符串substr的位置。

举例:

8bdf4da4c8e4e79be0676ffc333f7610.png

97121819e623fba9e99d5f8db945a25f.png

537fcb74-25d2-4f34-ba23-e13e72139a13.png

5、LEFT/RIGHT:字符串截取

左截取:

LEFT(str,len)

解释:返回字符串str中,从左边开始算起的,前len个字符。

右截取:

RIGHT(str,len)

解释:返回字符串str中,从右边开始算起的,前len个字符。

6、LENGTH:求字符串长度(以字节为单位)

LENGTH(str)

解释:返回值为字符串str的长度,单位为字节。一个多字节字符算作多字节。这意味着对于一个包含五个2字节字符的字符串,LENGTH()的返回值为10,而CHAR_LENGTH()的返回值则为5。

注:

GBK  编码中,一个中文字符是2个字节。

UTF-8编码中,一个中文字符是3个字节,一个英文字符是2个字节。

7、LTRIM/RTRIM/TRIM 去空格(左/右/自定义):

去掉左边的空格:

LTRIM(str)

解释:返回字符串str,其引导空格字符被删除。

去掉中间的空格:

RTRIM(str)

解释:返回字符串str,其结尾空格字符被删除。

自定义去空格:

TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)

注:大括号和中括号里面的参数为可选项,如果全部都加上的话,默认为参数both。

解释:将原字符串str去掉空格返回。只去开头(leading)的空格,只去结尾(trailng)的空格,或者同时去掉(both)开头和结尾的空格都行。若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则假设为BOTH。

TRIM([remstr FROM] str)

解释:remstr关键字的作用是去掉指定字符。 即所有包含remstr的前缀和/或后缀将被删除。未指定情况下,即删除空格。

官方文档的举例:

abf37329df68534d44ffd79871426bfa.png

8、STRCMP:判断字符串是否相等

STRCMP(expr1,expr2)

解释:判断两个字符串是否相等。若所有的字符串均相同,则返回0;若根据当前分类次序,第一个参数小于第二个,则返回-1;其它情况返回1。功能和比较器类似。

注:字符串的大小是按照ANSI编码来比较的。

举例:

7417be07d1b87dfd9ac7d1a546c1858e.png

9、CONCAT:字符串拼接

CONCAT(str1,str2,...)

解释:返回结果为连将str1、str2···拼接之后产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。括号里可能有一个或多个参数。

如果所有参数均为非二进制字符串,则结果为非二进制字符串。如果自变量中含有任意一个二进制字符串,则结果为一个二进制字符串。一个数字参数将自动转化为与之相等的二进制字符串格式。

若要避免这种情况二进制的情况出现,可使用显式类型 cast(str),将二进制的字符串转换为非二进制字符串。例如:SELECT CONCAT(CAST(int_col AS CHAR), char_col)

举例:(navicat编辑器会自动将二进制字符串转换为非二进制字符串)

b273e9995c71cc9ac7607ae2d02c862b.png

10、SUBSTRING:字符串截取

SUBSTRING(str,pos)SUBSTRING(str FROMpos)SUBSTRING(str,pos,len)SUBSTRING(str FROM pos FOR len)

解释:不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。

使用FROM的格式为标准SQL语法。

也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos字符(也就是说,pos为正时,从左边算起;pos为负时,从右边算起)。

官方文档举例如下:

254256956641d03270957b956afa3c21.png

二、常见日期时间函数:

1、DAYOFWEEK、 DAYOFYEAR、DAYOFMONTH

2、WEEKDAY

3、YEAR、QUARTER、MONTH、

4、HOUR、MINUTE、SECOND

5、TO DAYS、FROM DAYS

6、CURDATE、CURTIME、NOW   获取当前时间

1、DAYOFWEEK、 DAYOFYEAR、DAYOFMONTH

求星期几:(一周中的第几天)

DAYOFWEEK(date)

解释:返回date(1=周日,2=周一, ...,7=周六)对应的工作日索引。即:date对应的范围是1至7。

求一年中的某天是第几天:(一年中的第几天)

DAYOFYEAR(date)

返回date对应的一年中的天数,范围是从1到366。

求一个月中的某天是第几天:(一个月的第几天)

DAYOFMONTH(date)

返回date对应的该月日期,范围是从1到31。注:DAY(date) 和DAYOFMONTH(date)的含义相同。

举例:

a01f58b3e0221b5fb8784c924315eca3.png

6c58c717a54a6c0b0a16b1f4a4b81262.png

63d97877eb741416d06908c0dc1445a4.png

06393befa897da5a36c4ca37ce48256d.png

2、WEEKDAY:

求星期几:(一周的第几天)

WEEKDAY(date)

解释:返回date(0 = 周一, 1 = 周二, ... 6 = 周日)对应的工作日索引。即:date对应的范围是0至6。

注:DAYOFWEEK(date)和WEEKDAY(date)的功能相同,唯一的区别在于date对应的取值范围。

3、 YEAR、QUARTER、MONTH

求年份:

YEAR(date)

解释:返回date对应的年份,范围是从1000到9999。

求季度:

QUARTER(date)

解释:返回date对应的一年中的季度值,范围是从1到4。

求月份:(该月是一年当中的第几个月)

MONTH(date)

解释:返回date 对应的月份,范围是从1到12。

举例:

2fece99c637d541f34758e1034837b43.png

e3e4bc3419f699e0f3b5e2df7803362a.png

4、HOUR、MINUTE、SECOND

求小时:

HOUR(time)

解释:返回time 对应的小时数。对于日时值的返回值范围是从0到23 。

求分钟:

MINUTE(time)

解释:返回time对应的分钟数,范围是从0到59。

求秒数:

SECOND(time)

解释:返回time对应的秒数,范围是从0到59。

举例:

bb61ab4c535a8ea1a7df034552954a0d.png

59ebd741a6cec010e44e4ca7e2a411f7.png

f455f2a229dcdf3e47554c2a9a47bd6e.png

5、TO_DAYS、FROM_DAYS

求某日期,一共经历了多少天:(历史长河中)

TO_DAYS(date)

解释:给定一个日期date, 返回一个天数 (从年份0开始的天数 )。

求历史长河中的第某天,的日期:

FROM_DAYS(N)

解释:给定一个天数 N, 返回一个DATE值。

使用FROM_DAYS()处理古老日期时,务必谨慎,他不用于处理阳历出现前的天数(1582)。

6、CURDATE、CURTIME、NOW

求当前的年月日:

CURDATE()

解释:将当前日期按照'YYYY-MM-DD'或YYYYMMDD格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。

举例:

8306babe8c53aeceab0cb4bd02400b1c.png

求当前的时分秒:

CURTIME()

解释:将当前时间以'HH:MM:SS'或HHMMSS的格式返回,具体格式根据函数用在字符串或是数字语境中而定。

举例:

ce3dfc2937f0c3bab196548f1c86771d.png

求当前的年月日、时分秒:

NOW()

举例:

82d04ba137edd0c7efe9fe6bd311b8ba.png

注:如果now是放在语句当中,要看具体字段的格式要求。比如说,如果是放在date字段中,则只显示年月日;如果是放在datetime字段中,则同时显示年月日和时分秒。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值