常用函数
    1.字符串函数
        CONCAT(str1,str2,..,strN)
            将str1,str2..strN 拼接成一个字符串,当这里有任何一个为NULL,则拼接结果为NULL
 
        INSERT(str, idx,len,tarStr)
            将字符串str从 idx 位置开始,len个字符长度的子串替换为字符串tarStr.
 
        LOWER(str) / UPPER(str)
 
        LEFT( str , len ) / RIGHT( str , len )
            返回 str 最左/右边的 len 个字符
 
        LPAD( str , len , fill_str ) / RPAD( str , len , fill_str )
            使用字符串 fill_str 对str最左/右边进行填充,直到长度为 len 个字符长度.
 
        LTRIM(str) / RTRIM(str) / TRIM(str)
            去掉字符串str 最左侧的空格 / 最右侧的空格 / 两侧的空格
 
        REPEAT(str, count)
            返回 str 重复 count 次的结果
 
        REPLACE( str, src_str ,tar_str )
            用字符串 tar_str 替换 所有 出现在 str 中的字符串 src_str ;
 
        STRCMP(s1,s2)
            比较字符串s1和s2的ASCII的大小.
            s1<s2 则返回-1 ; s1>s2 返回1 ; s1=s2 返回0.
 
        SUBSTRING( str , idx , len )
            返回字符串 str 从第 idx 索引处开始 长度为 len 的字符串.
 
    2.数值函数
        ABS(x)
            返回x的绝对值
 
        CEIL(x)
            返回大于x的最大整数值
 
        FLOOR(x)
            返回小于x的最大整数值
 
        MOD(x,y)
            相当于 x%y
        
        RAND()
            返回0~1之间的随机数
 
        ROUND(x,y)
            返回 x 四舍五入后有y位小数的值
 
        TRUNCATE(x,y)
            返回 x 截断 为y位小数的结果;
 
        ROUND() 和 TRUNCATE() 区别是 前者会进行四舍五入,后者只是截断,而不会四舍五入.
 
 
    3.日期/时间 函数
        CURDATE()
            返回当前日期,只包含年月日yyyy-MM-dd
 
        CURTIME()
            返回当前时间,只包含时分秒hh:mm:ss
 
        NOW()
            返回当前日期+时间.yyyy-MM-dd hh:mm:ss
 
        UNIX_TIMESTAMP(date)
            返回日期date的UNIX时间戳
 
        FROM_UNIXTIME(unixtime)
            返回UNIXTIME时间戳的日期值.与UNIX_TIMESTAMP(date)函数互为逆操作.
        
        WEEK(date)
            返回一年中的第几周
 
        YEAR(date)
            返回所给日期是哪年
 
        HOUR(time)
            返回所给时间的小时
 
        MINUTE(time)
            返回所给时间的分钟
 
        MONTHNAME(date)
            返回所给date相对应的月份的英文名称,如July.
 
        DATE_FORMAT(date,fmt)
            返回按字符串fmt格式化日期date值.
 
            fmt可用到的格式符号:
                %S,%s    两位数字形式的秒
                %i    两位数字形式的分
                %H    两位数字形式的小时,24小时制
                %h,%I    两位数字形式的小事,12小时制 todo
                %k    数字形式的小时,24小时制.不满10的,不补0
      %l    数字形式的小时,12小时制.不满10的,不补0 todo
      %T    24小时制的时间形式 hh:mm:ss
      %r    12小时制的时间形式 hh:mm:ssAM 或 hh:mm:ssPM
      %p    AM 或PM
      %W    一周中每一天的英文名称(如Sunday,Monday)
      %a    一周中没一台呢的英文名称的缩写(如Sun,Mon)
      %d    两位数字表示月中的天数
      %e    数字形式表示月中的天数
      %D    英文后缀表示月中的天数(1st,2nd,3rd)
      %w    以数字形式表示周中的天数(0=Sunday,1=Monday...)
      %j    以3位数字表示年中的天数
      %U    周(0,1,52) , Sunday为周的第一天
      %u    周(0,1,52) , Monday为周的第一天
      %M    月的英文名(January,February..)
      %b    月的英文名缩写(Jan,Feb,Dec...)
      %m    两位数字表示的月份
      %c    数字表示的月份
      %Y    4位数字表示的年份
      %y    两位数字表示的年份
      %%    直接值"%"
 
        DATE_ADD(date,INTERVAL expr type)
            其中,INTERVAL是关键字,expr是表达式,type是间隔类型.
 
 MySQL的13种间隔(INTERVAL)类型
            HOUR               小时        hh
            MINUTE            分        mm
            SECOND           秒        ss
            YEAR                 年        YY
            MONTH             月        MM
            DAY            日        DD
            YEAR_MONTH        年月        YY-MM
            DAY_HOUR        日和小时    DD hh
            DAY_MINUTE        日和分钟    DD hh:mm
            DAY_SECOND        日和秒        DD hh:mm:ss
            HOUR_MINUTE        小时和分    hh:mm
            HOUR_SECOND        小时和秒    hh:ss
            MINUTE_SECOND        分钟和秒    mm:ss
 
demo : SELECT DATE_ADD( now() , INTERVAL -31 DAY) AS before31days ;
 
        DATEDIFF(date1,date2)
            计算两个日期中间相差多少天 todo 验证是否和两个参数的顺序相关
 
 
    
    4.流程函数
        DATABASE()
            返回当前数据库名
    
        VERSION()
            返回当前数据库版本
    
        USER()
            返回当前登录用户名
 
        INET_ATON(IP)
            返回IP地址的数字表示,多用于IP大小的比较
    
        INET_NTOA(num)
            返回数字代表的IP地址.不要用这种方式比较大小
 
        PASSWORD(str)
            返回字符串str的加密版本.返回的字符串长度为41.
            只用于对系统用户的密码进行加密,不要用于数据的加密
    
        MD5(str)
            返回字符串str的MD5值.对数据进行加密.