COUNT()
函数用于计算一个表格或查询结果集合中的行数。
语法:COUNT(column_name)
或 COUNT(*)
column_name
是可选的,表示计算某一列的非空值数量。*
表示计算所有行的数量。示例1:计算 users 表格中所有记录的数量
SELECT COUNT(*) FROM users;
示例2:计算 orders 表格中 paid_amount 列非空值的数量
SELECT COUNT(paid_amount) FROM orders;
SUM()
函数用于计算一个表格或查询结果集合中某一列的数值总和。
语法:SUM(column_name)
示例:计算 employees 表格中所有员工的薪资总和
SELECT SUM(salary) FROM employees;
AVG()
函数用于计算一个表格或查询结果集合中某一列的数值平均值。
语法:AVG(column_name)
示例:计算 employees 表格中所有员工的平均薪资
SELECT AVG(salary) FROM employees;
MAX()
函数用于获取一个表格或查询结果集合中某一列的最大值。
语法:MAX(column_name)
示例:获取 employees 表格中薪资最高的员工薪资
SELECT MAX(salary) FROM employees;
MIN()
函数用于获取一个表格或查询结果集合中某一列的最小值。
语法:MIN(column_name)
示例:获取 employees 表格中薪资最低的员工薪资
SELECT MIN(salary) FROM employees;
GROUP BY
子句用于将查询结果集按照一个或多个列进行分组,然后对每组数据进行统计。
语法:SELECT column_name1, aggregate_function(column_name2) FROM table_name GROUP BY column_name1;
示例:计算 employees 表格中每个部门的薪资平均值
SELECT department, AVG(salary) FROM employees GROUP BY department;
这将返回每个不同部门的平均薪资。
DATE()
函数返回一个日期数据的日期部分。
语法:DATE(date)
示例:获取当前日期
SELECT DATE(NOW());
NOW()
函数返回当前日期和时间的日期时间值。
语法:NOW()
示例:获取当前日期和时间
SELECT NOW();
YEAR()
函数返回一个日期的年份部分。
语法:YEAR(date)
示例:获取 employees 表格中员工加入公司的年份
SELECT YEAR(join_date) FROM employees;
MONTH()
函数返回一个日期的月份部分。
语法:MONTH(date)
示例:获取订单表格 orders 中的订单创建月份
SELECT MONTH(created_at) FROM orders;
DAY()
函数返回一个日期的天数部分。
语法:DAY(date)
示例:获取 customers 表格中每个客户注册时的具体日期
SELECT DAY(created_at) FROM customers;
HOUR()
函数返回一个日期时间的小时部分。
语法:HOUR(datetime)
示例:获取最近一次 logged_in 时间的小时部分
SELECT HOUR(logged_in) FROM users ORDER BY logged_in DESC LIMIT 1;
MINUTE()
函数返回一个日期时间的分钟部分。
语法:MINUTE(datetime)
示例:获取当前时间的分钟数
SELECT MINUTE(NOW());
SECOND()
函数返回一个日期时间的秒数部分。
语法:SECOND(datetime)
示例:获取最后一次订单更新时的秒数
SELECT SECOND(updated_at) FROM orders ORDER BY updated_at DESC LIMIT 1;
DATE_ADD()
函数在一个日期上添加指定的时间间隔后返回新的日期。
语法:DATE_ADD(date, INTERVAL expr unit)
date
参数:指定要添加时间间隔的日期。expr
参数:指定要添加的时间间隔值。unit
参数:指定时间间隔的单位,可以是 YEAR
、MONTH
、WEEK
、DAY
、HOUR
、MINUTE
或 SECOND
。示例:计算下一次产品更新时间
SELECT DATE_ADD(NOW(), INTERVAL 1 WEEK);
这将返回当前日期七天后的日期。
DATE_SUB()
函数在一个日期上减去指定的时间间隔后返回新的日期。
语法:DATE_SUB(date, INTERVAL expr unit)
示例:计算上一个客户服务时间
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH);
这将返回当前日期一个月前的日期。
DATEDIFF()
DATEDIFF()
是 SQL 中的一个日期函数,用于计算两个日期之间的天数差或日期时间差。
函数语法:
DATEDIFF(date1, date2)
其中,date1
和 date2
可以是日期或日期时间格式的数据,函数将返回 date1
和 date2
之间的间隔天数或日期时间差。
使用示例:
假如现在是 2022 年 1 月 1 日,查询某个用户最近一次登录时间距今日的天数:
SELECT DATEDIFF(NOW(), logged_in) AS days_ago FROM users WHERE user_id = 123;
在此例中,NOW() 表示当前日期时间,logged_in 是用于存储用户登录时间的字段,user_id = 123 是查询某一特定用户的登录信息。
该查询语句将返回一个名为 days_ago 的列,其中存储了最近一次登录距今日的天数。
注意:在使用 DATEDIFF()
函数计算时,如果两个输入日期的顺序颠倒,最终的计算结果将会是负数,也就是第一个日期减去第二个日期的结果,即 date2 - date1
。
例如,计算两个日期之间相差的天数:
SELECT DATEDIFF('2022-01-10', '2022-01-01') AS days_diff;
该查询语句将返回整数 9,表示 ‘2022-01-01’ 到 ‘2022-01-10’ 之间一共相隔了 9 天。
同样的,如果方法的参数颠倒,则返回一个负数,表示第二个日期比第一个日期早了多少天。
SELECT DATEDIFF('2022-01-01', '2022-01-10') AS days_diff;
注意到这里 days_diff 的值是 -9。
DATEDIFF()
是处理日期和时间差的很有用的 SQL 函数之一。