美文网首页
mysql之常用函数及sql语句

mysql之常用函数及sql语句

作者: iszengmh | 来源:发表于2018-06-11 08:42 被阅读13次

    参考链接(如有侵权立即删除)

    MYSQL日期获取(本月最后一天、本月第一天、下个月第一天、本月天数、一个月前那一天、当前时间与一个月前之间的天数)——CSDN@
    combating

    mysql取系统当前时间的函数——CSDN@Marjorie_Sha
    MYSQL中可以实现类似IF判断的方法——博客园@奋斗的羊仔
    mysql 获取当前日期周一和周日——CSDN@huanghanqian
    mysql格式化日期——博客园@都市烟火
    mysql 数据库中最新的一条记录 sql查询语句——百度经验@412482552

    正文

    常用函数

    日期函数及常用时间计算

    # 函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。
    NOW()
    # 获取当前日期,不包含times
    curdate() # 2018-06-11
    # 获取本月的最后一天
    last_day(curdate()); 
    #获取本月第一天
    select date_add(curdate(), interval - day(curdate()) + 1 day); 
    #获取下个月第一天
    select date_add(curdate() - day(curdate()) + 1, interval 1 month); 
    #获取本月天数
    select day(last_day(curdate())); 
    #获取一个月前那一天
    select date_sub(curdate(), interval 1 month); 
    #获取当前时间与一个月之间的天数
    select datediff(curdate(), date_sub(curdate(), interval 1 month)); 
    # 获取当前日期在本周的周一 
    select subdate(curdate(),date_format(curdate(),'%w')-1)
    # 获取下周日(由于系统默认一周的开始时间是周日,所以获取下周日,通常是我们所认为的本周日)
    select subdate(curdate(),date_format(curdate(),'%w')-7)
    # 取一天的结束时间
    select DATE_ADD(DATE_ADD(str_to_date(DATE_FORMAT(NOW(),'%Y-%m-%d'),'%Y-%m-%d %H:%i:%s'),INTERVAL 1 DAY),INTERVAL -1 SECOND);  #2018-06-11 23:59:59
    # 格式化日期 DATE_FORMAT(date,format),查看本文详细
    DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p') # Jun 11 2018 09:13 AM
    date_format(NOW(), '%Y-%c-%d %h:%i:%s' ) # 2018-6-11 09:15:26
    

    格式化日期详细说明

    格式 说明
    %a 缩写星期名
    %b 缩写月名
    %c 月,数值
    %D 带有英文前缀的月中的天
    %d 月的天,数值(00-31)
    %e 月的天,数值(0-31)
    %f 微秒
    %H 小时 (00-23)
    %h 小时 (01-12)
    %I 小时 (01-12)
    %i 分钟,数值(00-59)
    %j 年的天 (001-366)
    %k 小时 (0-23)
    %l 小时 (1-12)
    %M 月名
    %m 月,数值(00-12)
    %p AM 或 PM
    %r 时间,12-小时(hh:mm:ss AM 或 PM)
    %S 秒(00-59)
    %s 秒(00-59)
    %T 时间, 24-小时 (hh:mm:ss)
    %U 周 (00-53) 星期日是一周的第一天
    %u 周 (00-53) 星期一是一周的第一天
    %V 周 (01-53) 星期日是一周的第一天,与 %X 使用
    %v 周 (01-53) 星期一是一周的第一天,与 %x 使用
    %W 星期名
    %w 周的天 (0=星期日, 6=星期六)
    %X 年,其中的星期日是周的第一天,4 位,与 %V 使用
    %x 年,其中的星期一是周的第一天,4 位,与 %v 使用
    %Y 年,4 位
    %y 年,2 位

    判断

    # case……when…… else……END
    CASE expression
    WHEN value1 THEN returnvalue1
    WHEN value2 THEN returnvalue2
    WHEN value3 THEN returnvalue3
    ……
    ELSE defaultreturnvalue
    END
    
    
    # IF(expr1,expr2,expr3)
    select t.name,if(t.weight<80,'正常','肥胖') 体重 from t_customer t
    # ELT(N,str1,str2,str3,...)
    # 如果 N = 1,返回 str1,如果N = 2,返回 str2,等等。如果 N 小于 1 或大于参数的数量,返回 NULL。
    SELECT
        t. NAME,
        ELT(
            t. LEVEL,
            '超级VIP',
            'VIP',
            '普通'
        ) 客户类型
    FROM
        t_customer t
    

    字符串拼接

    # CONCAT(string1,string2,…)
    concat('a=','b') # a=b
    # CONCAT_WS(separator,str1,str2,...)
    CONCAT_WS('=','a','b') # a=b
    CONCAT_ws(' ',date_format(NOW(), '%Y-%c-%d' ),DATE_FORMAT(NOW(),'%h:%i:%s')) # 2018-6-11 09:26:40
    # 将多组数据合并为一个字符串 separator 是关键字,后面表示用逗号分隔
    GROUP_CONCAT(dd.dictionary_Name separator ',') 
    

    字符串转Date

    #str_to_date('字符串日期','格式')
    str_to_date('2017-10-16 15:30:28','%Y-%m-%d %H:%i:%s')
    

    查询

    # 这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始); 可在博客置顶状态灵活运用
    INSTR(字段名, 字符串);
    

    常用sql语句

    获取最新一条记录

    SELECT mytime from table order by mytime desc LIMIT 1
    

    博客“置顶”状态,排序

    # 将带有置顶字段的数据进行排序,也就是排前面
    select *from forum t order by  instr(t.state,'置顶') desc
    

    查询多条语句,并拼接成一个字符串

    # 查出多个分类数据,拼接成一个字符串
    select GROUP_CONCAT(dd.dictionary_Name separator ',')  from t_data_dictionary dd where FIND_IN_SET(dd.dictionary_id , 'abfdfa,dsfoisdf,weorieuo')
    

    相关文章

      网友评论

          本文标题:mysql之常用函数及sql语句

          本文链接:https://www.haomeiwen.com/subject/vejceftx.html