mysql函数

168 阅读8分钟

Mysql函数

日期和时间函数

  1. 获取当前日期的函数和获取当前时间的函数

    • curdate() cuerent_date()作用相同,按照yyyy-mm-dd格式 返回,
    • curtime()和current_time()函数作用相同,按照HH:MM:SS格式返回。
  2. 获取当前日期和时间的函数

    • current_timestamp(),localtime(),now(),和sysdate()函数的作用相同,均返回当前日期和时间值,格式为yyyy-mm-dd HH:MM:SS
  3. unix 时间戳函数

    • UNIX_TIMESTAMP(date)若无参数调用,则返回一个UNIX时间戳(‘1970-01-01 00:00:00’GMT之后的秒数)作为无符号整数。其中,GMT(Green wich mean time)为格林尼治标准时间。若用date来调用UNIX_TIMESTAMP(),它会将参数值以‘1970-01-01 00:00:00’GMT后的秒数的形式返回。date可以是一个DATE字符串、DATETIME字符串、TIMESTAMP或一个当地时间的YYMMDD或YYYYMMDD格式的数字。
    • FROM_UNIXTIME(date)函数把UNIX时间戳转换为普通格式的时间,与UNIX_TIMESTAMP (date)函数互为反函数。
  4. 返回UTC日期的函数和返回UTC时间的函数

    • UTC_DATE()函数返回当前UTC日期值,格式为yyyy-mm-dd
    • utc_time()函数返回时间值
  5. 获取月份的函数month(date)和monthname(date)

    • month(date)函数返回date对应的月份,
    • monthname(date)返回日期date对应的英文全名
  6. 获取星期的函数datname(d),dayofweek(d) weekday(d)

    • dayname(d) 函数返回d对应的工作日的英文名称
    • dayofweek(d) 返回d对应的一周中的索引,1表示转换后日,以此类推。
    • weekday(d) 返回d对应的工作日索引,0表示周一。
  7. 获取星期数的函数week(d)和weekofYear(d)

    • week(d)计算一年中的第几周,WEEK('2018-02-20')使用一个参数,其第二个参数为default_week_format默认值,MySQL中该值默认为0,指定一周的第一天为周日,因此和WEEK('2018-02-20',0)返回结果相同;WEEK('2018-02-20',1)中第二个参数为1,指定一周的第一天为周一,返回值为8。可以看到,第二个参数不同,返回的结果也不同,使用不同的参数的原因是不同地区和国家的习惯不同,每周的第一天并不相同。
    • WEEKOFYEAR(d)计算某天位于一年中的第几周,范围是1~53,相当于WEEK(d,3)。
  8. 获取天数的函数dayofyear(d)和dayofmonth(d)

    • dayofyear(d)返回一年中的第几天
    • dayofmonth(d)返回的一个月中的第几天
  9. 获取年份,季度,小时,分钟和秒钟的函数

    • year(date) 返回date对应的年份
    • quarter(date) 返回date对应的一年中的季度值,范围是1-4
    • minute(time) 返回time对应的分钟数
    • second(time)返回秒数
  10. 获取日期的指定值的函数extract(type form date)

    • extract(type from date)函数所使用的时间间隔类型说明符于date_add()或date_sub()相同,但他从日期中提取一部分,而不是执行日期运算。
    • type值为YEAR时,只返回年值,结果为2018;type值为YEAR_MONTH时返回年与月份,结果为201807;type值为DAY_MINUTE时,返回日、小时和分钟值,结果为120102。

image.png 11. 时间和秒钟转换的函数 - time_to_sec(time)返回转化为秒的time参数,转换公式为:小时3600+分钟60+秒。 - SEC_TO_TIME(seconds)返回被转化为小时、分钟和秒数的seconds参数值,其格式为‘HH:MM:SS’或HHMMSS,具体格式根据该函数是否用在字符串或数字语境中而定。 12. 计算日期和时间的函数 - 计算日期和时间的函数有DATE_ADD()、ADDDATE()、DATE_SUB()、SUBDATE()、ADDTIME()、SUBTIME()和DATE_DIFF()。 - 在DATE_ADD(date,INTERVAL expr type)和DATE_SUB(date,INTERVAL expr type)中,date是一个DATETIME或DATE值,用来指定起始时间。expr是一个表达式,用来指定从起始日期添加或减去的时间间隔值。对于负值的时间间隔,expr可以以一个负号‘-’开头。type为关键词,指示了表达式被解释的方式。表6.2显示了type和expr参数的关系。 -

image.png 13. 将日期和时间格式化的函数 - date_format(date,format) -

image.png

- TIME_FORMAT(time,format)根据表达式format的要求显示时间time。表达式format指定了显示的格式。因为TIME_FORMAT(time,format)只处理时间,所以format只使用时间格式。

条件判断函数

  1. if(expr,v1,v2)表达式expr为true,则返回v1,否则返回v2
  2. ifnull(v1,v2) 假如v1不为null,则ifnul返回v1,否则返回v2。
  3. case函数:
    • case expr when v1 then r1 ... end: 如果expr值等于vn,则返回对应位置then后面的结果,则返回else后面的值

系统信息函数

  1. 获取MySQL版本号,链接数和数据库名的函数

    • version()
    • connection_id()返回服务器当前连接的次数
    • priocesslist 命令的输出结果显示了有哪些线程在运行,不可以擦好看当前所有的链接数,还可以查看当前的连接状态,帮助识别出有问题的查询语句等
  2. 获取用户名的函数

    • user() current_user(),current_user,system_user()和session_user()这集合函数返回当前被mysql服务器验证的用户名和主机名组合,返回值一般情况下是相同的。
  3. 获取字符串的字符集和排序方式的函数

    • charset(str) 返回字符串str自变量的字符集。
    • CHARSET('abc')返回系统默认的字符集utf8;CHARSET(CONVERT('abc' USING latin1))返回的字符集为latin1;VERSION()返回的字符串使用utf8字符集,因此CHARSET返回结果为utf8。
    • COLLATION(str)返回字符串str的字符排列方式。
  4. 获取最后一个自动生成的id值的函数

    • last_insert_id()函数返回最后生成的auto_incrment值

MySQL新特性

  1. 加密函数MD5(str)

    • md5(str)为字符串算出一个md5 128比特校验和,该值以32位十六进制数字的二进制字符串形式返回,若参数为null 则返回null.
  2. 加密函数SHA(str)

    • SHA(str) 从原明文密码str计算并返回加密后的密码字符串
  3. 加密函数SHA2(str,hash_length)

    • 使用hash_length作为长度,加密str,hash_length支持的支持的值为224,256,384,512和0,0等同于256.

其他函数

  1. 格式化函数format(x,n)
    • 将数字x格式化并以四舍五入保留小数点后n位,结果以字符串的形式返回,若n位0,返回不含小数部分。
  2. 不同进制的数字进行转换的函数
    • conv(n,form_base,to_base)函数进行不同禁止之间的转换
  3. ip地址于数字相互转换的函数
    • inet_aton(expr)给出一个作为字符串的网络地址的点地址表示,返回一个代表地址数值的整数,地址可以是4或8bit地址。 image.png
  4. 加锁函数和解锁函数
    • GET_LOCK(str,timeout)设法使用字符串str给定的名字得到一个锁,超时为timeout秒。若成功得到锁,则返回1;若操作超时,则返回0;若发生错误,则返回NULL。假如有一个用GET_LOCK()得到的锁,当执行RELEASE_LOCK()或连接断开(正常或非正常)时,这个锁就会解除。RELEASE_LOCK(str)解开被GET_LOCK()获取的、用字符串str所命名的锁。若锁被解开,则返回1;若该线程尚未创建锁,则返回0(此时锁没有被解开);若命名的锁不存在,则返回NULL。若该锁从未被GET_LOCK()的调用获取,或锁已经被提前解开,则该锁不存在。IS_FREE_LOCK(str)检查名为str的锁是否可以使用(换言之,没有被封锁)。若锁可以使用,则返回1(没有人在用这个锁);若这个锁正在被使用,则返回0;出现错误,则返回NULL(诸如不正确的参数)。IS_USED_LOCK(str)检查名为str的锁是否正在被使用(换言之,被封锁)。若被封锁,则返回使用该锁的客户端的连接标识符(connection ID);否则,返回NULL。
  5. 重复执行指定操作的函数
    • benchmark(count,expr)函数重复count次执行表达式expr。它可以用于计算MySQL处理表达式的速度。结果值通常为0(0只是表示处理过程很快,并不是没有花费时间)。另一个作用是它可以在MySQL客户端内部报告语句执行的时间。
  6. 改变字符集的函数
    • convert(... using ...):带有using的convert()函数被用来在不同的字符集之间转化的数据。
    • charset(convert('string' using latin1)
  7. 改变数据类习的函数
    • cast(x,as type)和convert(x type)都可以将一个类型的值转换成另外一个类型的值,可转换的type有BINARY、CHAR(n)、DATE、TIME、DATETIME、DECIMAL、SIGNED、UNSIGNED。

新特性2 窗口函数