项目中经常遇到的mysql函数

常用mysql语句

MYSQL查询今天、昨天、7天前、30天、本月数据

查询当天数据--CURDATE()函数和DATE()函数
CURDATE() = DATE(时间字段名)

查询当月数据--DATA_FORMAT()函数和NOW()函数
DATE_FORMAT(时间字段名, '%Y-%m') = DATE_FORMAT(now(), '%Y-%m')

查询今天:
SELECT * FROM 表名 WHERE TO_DAYS( 时间字段名) = TO_DAYS(NOW());

查询昨天:
SELECT * FROM 表名 WHERE (TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名)) <= 1;

查询7天前:
SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(时间字段名);

查询30天:
SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= DATE(时间字段名);

查询本月:
SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' );

-- Mysql去重复字段(DISTINCT--所有字段内容都一样,Mysql才会认为是一条重复数据,否则不会去重)
SELECT 
    DISTINCT CURDATE(), v.USERNAME, v.TRUENAME
FROM
    v_user_info v
LEFT JOIN crm_department d ON v.AGENT_SID = d.sid
LEFT JOIN crm_contract c ON v.USERNAME = c.directorAccount
WHERE CURDATE() = DATE(c.createTime)
GROUP BY v.USERNAME
使用Mysql语句查询一天中每个小时数据的数量统计
SELECT HOUR
    ( e.create_time ) AS HOUR,
    count( * ) AS Count 
FROM
    contract_order e 
WHERE
    e.create_time between '2019-10-11'  and '2019-10-12' 
GROUP BY
    HOUR ( e.create_time ) 
ORDER BY
    HOUR ( e.create_time );

查询出的每个小时的结果如下图:

原文地址:https://www.cnblogs.com/no8g/p/13415584.html