转CB大佬的几个有用的MySQL知识

1.find_in_set函数
  find_in_set(str,strlist); str是一个字符串 strlist是字符串列表--一个有多个子链被“,”分开的字符串
  有多种情况:
    a.str为null 或者 strlist为null时返回null find_in_set(null,"1,2") 返回null
    b.如果第一个参数是一个常数字符串,而第二个是type SET列,则 FIND_IN_SET() 函数被优化,使用比特计算
    c.str不在strlist或者为空字符串 时返回0 str中有“,”将报错
      select FIND_IN_SET('2','1,2');返回2 
      select FIND_IN_SET('6','1'); 返回0 
      SELECT FIND_IN_SET('b','a,b,c,d') str为b在strlist中的第二个位置所以返回2

    d.特殊情况: select * from user where FIND_IN_SET(id,"1,3,4,5,8");
     类似于 select * from user where id in(1,3,4,5,8);
2.DATE_FORMAT(date,format)格式化日期
    %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 位
3.FROM_UNIXTIME 和 UNIX_TIMESTAMP 是相反的时间函数
    FROM_UNIXTIME是将秒数指定格式转化成日期 SELECT FROM_UNIXTIME( 1511280000, '%Y年%m月%d日') 2017年11月22日
    UNIX_TIMESTAMP是将日期转化成秒数 SELECT UNIX_TIMESTAMP('2017-11-22') ; 1511280000

posted @ 2017-11-24 15:04  夏风中的Young_Uncle  阅读(278)  评论(0编辑  收藏  举报