Mysql 常用函数

1. CHAR_LENGTH 

  计算字符串长度
select merchant_name, CHAR_LENGTH(merchant_name) from  tk_merchant where    CHAR_LENGTH(merchant_name) < 10

九福生鲜集会	    6
阿成川菜	        4
九度烧烤	        4
志文家韩食铺	    6
浩启阁	        3
新振鲜养身鸡汤	7
黄金水岸农家乐店	8
好客山东炒鸡烧烤	8

2. NOW()、 CURRENT_DATE

获取当前时间

-- 【当前时间】
SELECT NOW();             --  结果: 2023-09-05 06:48:47
SELECT CURRENT_DATE;      --  结果: 2023-09-05
SELECT CURRENT_TIME;      --  结果: 06:48:47
SELECT CURRENT_TIMESTAMP; --  结果: 2023-09-05 06:48:47
 
SELECT NOW();           -- 2023-09-05 07:14:04
SELECT DATE(NOW());     -- 2023-09-05
 
select YEAR(NOW());     -- 2023
select MONTH(NOW());    -- 9
select DAY(NOW());      -- 5
SELECT HOUR(NOW());     -- 7

3. DATE_FORMAT 

时间格式转换

-- 【DATE_FORMAT】格式转换
select  DATE_FORMAT(NOW(),'%Y-%m-%d');                    -- 2023-09-05
select  DATE_FORMAT('2024-09-25 07:14:04','%Y-%m-%d');    -- 2024-09-25
select  DATE_FORMAT(NOW(),'%Y%m%d');                      -- 20230905
select  DATE_FORMAT(NOW(),'%Y%m');                        -- 202309 可以统计月份
 
例:
SELECT DATE_FORMAT(statistics_date, '%Y%m') as segment,
       sum(total_verify_fee)                as value
from   month_verify_statistics
        GROUP BY segment

4.  DATE_ADD 

时间加减

-- 【DATE_ADD】
select DATE_ADD(DATE(NOW()),INTERVAL 1 day);     -- DATE(NOW()是2023-09-05  加一天后是 2023-09-06
select DATE_ADD('2025-02-28',INTERVAL 1 day);    -- 加一天 2025-03-01
select DATE_ADD('2025-02-28',INTERVAL -10 day);  -- 往前10天  2025-02-18
select DATE_ADD('2025-02-28',INTERVAL 3 MONTh);  -- 加3个月  2025-05-28
select DATE_ADD('2025-02-28',INTERVAL 3 YEAR);   -- 加3年   2028-05-28
SELECT '2020-02-01' + INTERVAL 5 DAY AS DATE;    -- 加5天  2020-02-06
 
    DATE_ADD 函数时间单位:
(1)MICROSECOND:微秒
(2)SECOND:秒
(3)MINUTE:分钟
(4)HOUR:小时
(5)DAY:天
(6)WEEK:周
(7)MONTH:月
(8)QUARTER:季度
(9)YEAR:年

5. FROM_UNIXTIME

 把时间戳转换为 ymd等 格式的时间       例: 1689668704 -->  2023-07-18 08:25:04
-- 数据库中  verify_time 字段是存储的 时间戳格式,秒级
SELECT 
verify_time, 
FROM_UNIXTIME(verify_time) , 
FROM_UNIXTIME(verify_time,'%Y%m%d'),
FROM_UNIXTIME(verify_time,'%Y-%m-%d'),
FROM_UNIXTIME(verify_time,'%H'),
FROM_UNIXTIME(verify_time,'%i')
from tk_ledger_detail

查询结果如下: 

6. UNIX_TIMESTAMP

把时间转换为 时间戳 

-- UNIX_TIMESTAMP
SELECT UNIX_TIMESTAMP('2023-07-18 08:25:04');  -- 1689668704
SELECT UNIX_TIMESTAMP('2023-07-18');           -- 1689638400
SELECT UNIX_TIMESTAMP('2023-07-18 00:00:00');  -- 1689638400

7. last_day 

LAST_DAY(date)date,要求日期格式如“YYYY-MM-DD”

指定日期所在月份的最后一天,如“YYYY-MM-DD”格式的日期

SELECT LAST_DAY('2023-02-03')     -- 2023-02-28

8. Floor

数字向下取整

示例:每天按两小时分组,查询数据

ledger_time 字段存储格式是 1689756972 , 所以需要使用 FROM_UNIXTIME 转换格式, 除以2后使用 floor 对数字向下取整

 select
            concat(
                    (floor
                        (FROM_UNIXTIME(ledger_time , '%H') / 2 )
                    ) * 2 + 2, ':00'
                ) AS segment,
            sum(amount_ledger_total) as value
        from
            tk_ledger_detail
  GROUP BY segment;
 
ledger_time 字段存储格式是 1689756972 , 所以需要使用 FROM_UNIXTIME 转换格式, 除以2后使用  floor 对数字向下取整

 结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值