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 对数字向下取整
结果: