• MySQL常用函数汇总(字符串、时间函数等)


    MySQL常用函数汇总

    时间函数(日期)

    函数名说明
    CURDATE() / CURTIME()返回当前日期(年-月-日) / 返回当前时间(时:分:秒)
    NOW()当前当前的日期和时间(年-月-日 时:分:秒)
    DATE_FORMAT(date,fmt)按照fmt的格式,对日期date进行格式化 (例:只截取年月 date_format( ‘2021-06-12’, “%Y%m” ))
    SEC_TO_TIME(seconds)秒数转换成为时分秒(小时:分:秒)
    TIME_TO_SEC时分秒转换为秒数
    DATEIFF(data1,data2)返回date1和date2两个日期相差的天数
    DATE_ADD(date,INTERVAL expr int)对给定的日期增加减少指定的时间单元(unit day天/hour 小时/ minutes 分钟 / second 秒 )
    DATE_ADD(date,INTERVAL expr type)对给定的日期减少 ,(跟add相反)
    EXTRACT(unit FROM date)返回日期date的指定部分

    fmt格式:

    %Y - 代表年 ,%m: 月份(0-12) , %d :天(0-31),  %H : 小时(0-24) , %i : 分钟(0-59) , %s: 秒(0-59)
    
    • 1

    例子

    获取当前时间、实时时间日期、相差天数

    SELECT 
        CURdate() as '当前日期(年-月-日)' ,
        CURTIME()  as '当前时间(时:分:秒)',
        now() as '当前日期时间(年-月-日 时:分:秒)', 
        SEC_TO_TIME(120) as '秒数转时分秒', 
        DATE_FORMAT('2021-06-12','%Y') as '日期格式化', 
        DATEDIFF('2021-06-15','2021-06-12') as '日期相差天数'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    计算每门课程,上线时间距当前时间的天数

    select dateiff(now(), online_time ) as diff_day from imc_course
    
    • 1

    操作当前时间增加一天、减少一天、增加一年等操作

    #当前时间日期加1天
    select now(), date_add(now(),INTERVAL 1 day)
    
    #当前时间日期加1年
    select now(), date_add(now(),INTERVAL 1 year)
    
    #当前时间日期减一天
    select now(), date_add(now(),INTERVAL -1 day)
    select now(), DATE_SUB(now(),INTERVAL 1 day)	#效果同理(只是不加-符号)
    
    #当前时间日期减1小时30分
    select now(), date_add(now(),INTERVAL '-1:30' HOUR_MINUTE)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    提取时间格式化日期的区别

    #格式化获取
    select  now(),
    		date_format(now(), "%Y") as '获取年',
    		date_format(now(), "%m") as '获取月份',
    		date_format(now(), "%Y H:i:s") as '获取年  时分秒'
    
    #提取日期
    select now(), 
    	   extract(YEAR from now() ) as '提取当前时间的年',
    	   Extract(MONTH from now() ) as  '提取出月份',
    	   extract(day from now()) as '提取日期',
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    时间函数 (时间戳)

    函数名说明
    UNIX_TIMESTAMP()【日期转时间戳】返回unix时间戳(从1970年起~当前今开发的秒数)
    FROM_UNIXTIME()【时间戳转日期】把Unix时间转化日期时间

    很多开发比较喜欢日期用unix时间戳 形式来存储。,因为大家都认为时间戳是整数类型来保存日期数据性能会更好。

    其实现在看来,这种方式也存在一些问题。unix时间戳必须经过转化才能显示日期。使用起来并不方便(不太推荐),好在mysql提供2个函数,可以时间戳转日期格式(相互转化)。

    select UNIX_TIMESTAMP('2018-12-25 12:25:00');
    #结果:1545711900
    
    select FROM_UNIXTIME(1545711900);
    #结果:2018-12-25 12:25:00
    
    • 1
    • 2
    • 3
    • 4
    • 5

    字符串函数

    CONCAT(str1,str2,...)【拼接】把字符串str1,str2连接成一个字符串来显示
    CONCAT_WS(sep,str1,str2,...)【拼接】用指定的分隔符sep连接字符串
    CHAR_LENGTH(str)【判断长度】返回字符串str的字符个数
    LENGTH(str)【判断长度】返回字符串str的字节个数
    FORMAT(X,D[,locale])【截取】将数字N格式化为格式,如“#,##,###.###” 并舍入到D位小数
    LEFT(str,len)/ RIGHT(str,len)【截取】从字符串的左/右边起返回len长度的子字符串
    SUBSTRING(str,pos,[len])【截取】从字符串str的pos位置起返回字符长度为len的字符串
    SUBSTRING_INDEX(str,delim,count)【分隔符截取】返回字符串str按delim分隔的前count个子字符串
    LOCATE(substr,str)【截取】在字符串str中返回子串substr第一次出现的位置
    TRIM([remstr FROM str])【去除】从字符串str两端删除不需要的字符remstr

    其他函数

    函数名说明
    ROUND(X,D)对数值X进行四舍五入保留D位小数
    RAND()返回一个在0和1之间的随机数 (不推荐,特别是存量大数据表,性能差)
    CASE WHEN [condition] THEN result [ WHEN [condition] THEN result …] [ ELSE result] END用于实现其他语言的case…when功能,提供数据流程控制
    MD5返回str的MD5值
    FIND_IN_SET(str,strlist)获取字段内要查询的字符串
    REPLACE字段字符串匹配替换
  • 相关阅读:
    Rust开始分叉,Rust基金会与开源CrabLang社区关系紧张
    致 喷子们
    Exception in thread “main“ java.io.NotSerializableException:
    解决: 使用html2canvas和print-js打印组件时, 超出高度出现空白页
    Kubernetes 部署RocketMQ高可用集群
    面试题:volatile能否保证线程安全
    阿里云ECS部署Java项目使用docker安装MySQL
    构造函数和析构函数
    解决QT中文乱码
    描述符——配置描述符
  • 原文地址:https://blog.csdn.net/limingqiang007/article/details/127921204