判断
IF语句
IF(condition, true_statement, false_statement);
- condition: 条件表达式,可以是任何返回布尔值的表达式
- true_statement: 如果条件为真,则执行的语句
- false_statement: 如果条件为假,则执行的语句
CASE语句
CASE
WHEN express1 THEN result1
WHEN express2 THEN result2
...
ELSE result
END;
- 若express1为真,返回result1
- 若express2为真,返回result2
- 否则,返回result
3.IFNULL函数
IFNULL(express, value);
- 若express为NULL,则返回value值
日期
TIMESTAMPDIFF() 函数
TIMESTAMPDIFF() 函数返回两个日期或时间表达式之间的差,以指定的单位返回。
SELECT TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)
FROM your_table;
# 计算两个日期之间的天数差异
SELECT TIMESTAMPDIFF(DAY, '2023-01-01 10:00:00', '2023-01-31 16:00:00') AS days_difference;
- unit 是你要计算的间隔单位,如 SECOND, MINUTE, HOUR, DAY, MONTH, YEAR 等
- datetime_expr1 和 datetime_expr2 是你要比较的日期或时间表达式
UNIX_TIMESTAMP() 和 FROM_UNIXTIME() 计算秒数差异
如果你需要将时间间隔转换为秒,可以使用 UNIX_TIMESTAMP() 将日期时间转换为UNIX时间戳,然后进行计算。
FROM_UNIXTIME(“timestamp”) -> yyyy-mm-dd hh:mm:ss
UNIX_TIMESTAMP(“yyyy-mm-dd hh:mm:ss”) -> timestamp
SELECT UNIX_TIMESTAMP(datetime_expr2) - UNIX_TIMESTAMP(datetime_expr1) AS seconds_difference;
# 秒数 18000
SELECT UNIX_TIMESTAMP('2023-01-01 15:00:00') - UNIX_TIMESTAMP('2023-01-01 10:00:00') AS seconds_difference;
过去x小时/天,未来x小时/天
select NOW(),
date_sub(NOW(), INTERVAL 5 HOUR) as '-5h',
date_add(NOW(), INTERVAL 5 HOUR) '+5h',
date_sub(CURDATE(), INTERVAL 1 DAY) '-1d',
date_add(CURDATE(), INTERVAL 1 DAY) '+1d'
NOW() | -5h | +5h | -1d | +1d |
---|---|---|---|---|
2025-01-31 15:07:53 | 2025-01-31 10:07:53 | 2025-01-31 20:07:53 | 2025-01-30 | 2025-02-01 |
字符串
统计字符个数
# 计算column字段的字符个数
CHAR_LENGTH(column)
数学计算
ROUND
# 保留column字段两位小数,四舍五入
ROUND(column, 2)