TIMESTAMPDIFF
TIMESTAMPDIFF
是一个MySQL函数,用于计算两个日期或时间之间的差值。函数返回两个日期或时间之间的差值,并以指定的单位表示。
语法:
sql
TIMESTAMPDIFF(unit, start_date, end_date)
其中:
-
unit
是计算的单位。可以是以下值:YEAR(年)、QUARTER(季度)、MONTH(月)、DAY(天)、HOUR(小时)、MINUTE(分钟)、SECOND(秒)。 -
start_date
是开始日期或时间。 -
end_date
是结束日期或时间。
示例:
- 计算了两个日期之间的天数差。
sql
SELECT TIMESTAMPDIFF(DAY, '2022-01-01', '2022-02-01') AS day_diff;
CONCAT
CONCAT函数是MySQL中用来连接多个字符串的函数。它可以将两个或多个字符串拼接在一起,并返回拼接后的结果。
语法:
sql
concat(str1, str2,...)
其中:
- 返回结果为连接参数产生的字符串
- 如果有任何一个参数为null,则返回值为null。
示例:
sql
SELECT CONCAT('Hello', ' ', 'World');
输出:Hello World
round
-round函数是一个常用的四舍五入函数。它可以用于对浮点数进行取整运算。
它有两种常用的用法:
一种是只传入一个参数,即要进行取整的浮点数值;
另一种是传入两个参数,第一个参数是要进行取整的浮点数值,第二个参数是精确到小数点后几位,默认为0。
语法:
sql
SELECT ROUND(column_name,decimals) FROM [表名];
其中:
-
column_name: 要舍入的字段,必需
-
decimals: 规定要返回的小数位数,可选
示例:
- ROUND(X): 返回'参数X'四舍五入的一个整数
sql
SELECT ROUND(1.58);
查询结果:2
- ROUND(X,D): 返回'参数X'四舍五入的有 D位小数的一个数字。
- 如果D为0,结果将没有小数点或小数部分;
- 如果D为负数,这时是指定小数点左边的D位整数位为0,同时小数位均为0
sql
SELECT ROUND(1123.26723,1);
SELECT ROUND(1123.26723,0);
SELECT ROUND(1123.26723,-1);
查询结果:
- 1123.3
- 1123
- 1120
IF
MySQL的IF函数是一个流程控制函数,可以根据条件的真假返回不同的值。
语法:
sql
IF(condition, value_if_true, value_if_false)
其中:
- condition:要进行判断的条件表达式或值。
- value_if_true:如果条件为真,将返回的值。
- value_if_false:如果条件为假,将返回的值。
示例:
- 这个查询将返回一个结果集,包含name、age、gender和is_adult字段。如果age大于等于18,则is_adult字段的值为'成年',否则为'未成年'。
sql
SELECT name, age, gender, IF(age >= 18, '成年', '未成年') AS is_adult
FROM student;
CASE WHEN
CASE WHEN语句是一种条件表达式,用于在SQL查询中根据不同的条件选择不同的结果。
语法:
sql
CASE WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END
其中:
-
condition1、condition2等是条件表达式,可以是列与值之间的比较、逻辑运算符的组合等。
-
result1、result2等是在条件满足时返回的结果,可以是常量、列名、表达式等。
-
ELSE子句是可选的,用于指定当所有条件不满足时返回的默认结果。
示例:
- 这个查询会从名为"students"的表中选择姓名(name)和年龄(age)列,并使用CASE WHEN语句根据不同的年龄段给每个人分组。如果年龄小于18岁,则分到"未成年"组;如果年龄在18到60岁之间,则分到"成年"组;否则分到"老年"组。然后,将每个人的分组结果作为新的列"age_group"返回。
sql
SELECT name, age,
CASE
WHEN age < 18 THEN '未成年'
WHEN age >= 18 AND age < 60 THEN '成年'
ELSE '老年'
END AS age_group
FROM students;