# MySQL 常用函数

# MySQL 数字函数

  • ABS(x) 返回 x 的绝对值
SELECT ABS(-1) -- 返回 1
  • BIN(x) 返回 x 的二进制编码

    SELECT BIN(15); -- 1111
  • CEILING(x) 返回大于或等于 x 的最小整数

    SELECT CEILING(1.5); -- 返回 2
  • EXP(x) 返回 e 的 x 次方

    SELECT EXP(3) -- 20.085536923188
  • FLOOR(x) 返回小于或等于 x 的最大整数

    SELECT FLOOR(1.5) -- 返回 1
  • MOD(x,y) 返回 x 除以 y 以后的余数

    SELECT MOD(5,2) -- 1
  • POW(x,y) 返回 x 的 y 次方

    SELECT POWER(2,3) -- 8
  • RAND() 返回 0 到 1 的随机数

    SELECT RAND() --0.93099315644334
  • ROUND(x) 返回离 x 最近的整数

    SELECT ROUND(1.23456) --1

    round() &floor()

    floor () 函数:取整,保留整数部分,舍弃小数部分

    round () 函数:四舍五入。round (x,d):x 是要处理的数,d 是保留的小数位数。round (x): 相当于 round (x,0)

# 常用聚合函数

  • AVG(expression) 返回一个表达式的平均值,expression 是一个字段

    SELECT AVG(Price) AS AveragePrice FROM Products; -- 返回 Products 表中 Price 字段的平均值:
  • COUNT(expression) 返回查询的记录总数,expression 参数是一个字段或者 * 号

    SELECT COUNT(ProductID) AS NumberOfProducts FROM Products; -- 返回 Products 表中 products 字段总共有多少条记录:
  • MAX(expression) 返回字段 expression 中的最大值

    SELECT MAX(Price) AS LargestPrice FROM Products; -- 返回数据表 Products 中字段 Price 的最大值:
  • MIN(expression) 返回字段 expression 中的最小值

    SELECT MIN(Price) AS MinPrice FROM Products;
  • SUM(expression) 返回指定字段的总和

    SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails;

# 字符串函数

  • ASCII(s) 返回字符串 s 的第一个字符的 ASCII 码。

    SELECT ASCII(CustomerName) AS NumCodeOfFirstChar
    FROM Customers;
  • CHAR_LENGTH(s) 返回字符串 s 的字符数

    SELECT CHAR_LENGTH("RUNOOB") AS LengthOfString;
  • CONCAT(s1,s2...sn) 字符串 s1,s2 等多个字符串合并为一个字符串

    SELECT CONCAT("SQL ", "Runoob ", "Gooogle ", "Facebook") AS ConcatenatedString;
  • POSITION(s1 IN s) 从字符串 s 中获取 s1 的开始位置

    SELECT POSITION('b' in 'abc') -- 2
  • REPLACE(s,s1,s2) 将字符串 s2 替代字符串 s 中的字符串 s1

    SELECT REPLACE('abc','a','x') --xbc
  • REVERSE(s) 将字符串 s 的顺序反过来

    SELECT REVERSE('abc') -- cba
  • SUBSTR(s, start, length) 从字符串 s 的 start 位置截取长度为 length 的子字符串

    SELECT SUBSTR("RUNOOB", 2, 3) AS ExtractString; -- UNO
  • TRIM(s) 去掉字符串 s 开始和结尾处的空格

    SELECT TRIM('    RUNOOB    ') AS TrimmedString;
  • UPPER(s) 将字符串转换为大写

    SELECT UPPER("runoob"); -- RUNOOB

UCASE (s) 同上将字符串转换为大写 , SELECT UCASE("runoob"); -- RUNOOB

# 日期和时间函数

  • CURDATE() 返回当前日期

    SELECT CURDATE(); -> 2018-09-19
  • CURRENT_DATE() 返回当前日期

    SELECT CURRENT_DATE();
    -> 2018-09-19
  • CURRENT_TIME 返回当前时间

    SELECT CURRENT_TIME();
    -> 19:59:02

    ps: CURTIME () 也是返回当前时间 SELECT CURTIME();-> 19:59:02

  • CURRENT_TIMESTAMP() 返回当前日期和时间

    SELECT CURRENT_TIMESTAMP()
    -> 2018-09-19 20:57:43

    ps: NOW () 也是返回当前日期和时间 SELECT NOW()-> 2018-09-19 20:57:43

  • DATE() 从日期或日期时间表达式中提取日期值

    SELECT DATE("2017-06-15");    
    -> 2017-06-15
  • DATEDIFF(d1,d2) 计算日期 d1->d2 之间相隔的天数

    SELECT DATEDIFF('2001-01-01','2001-02-02')
    -> -32

    还有更多时间函数,见文档

    # 时间查询

    查询一天:

    select * from table where to_days(column_time) = to_days(now());
    select * from table where date(column_time) = curdate();

    查询一周:

    select * from table  where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(column_time);

    查询一个月:

    select * from table  where DATE_SUB(CURDATE(), INTERVAL INTERVAL 1 MONTH) <= date(column_time);
    -- 最近 30 天:
    SELECT film_name as name, ticket_count as value FROM history where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(history_time)

    查询一年:

    SELECT DATE_FORMAT(history_time,'%Y') as years,COUNT(history_time) as sum
    FROM history
    GROUP BY years
更新于

请我喝[茶]~( ̄▽ ̄)~*

Jean 微信支付

微信支付

Jean 支付宝

支付宝

Jean 贝宝

贝宝