




















以下为 SQL 中日期格式化、时间计算及条件逻辑的用法解析。
学习内容
2. 时间格式化
3. 时间与日期计算
示例代码与讲解
1. 日期格式化
SELECT DATE_FORMAT(NOW(), '%y');
SELECT DATE_FORMAT(NOW(), '%M %y');
SELECT DATE_FORMAT(NOW(), '%M %D %y');
2. 时间格式化
SELECT TIME_FORMAT(NOW(), '%H');
SELECT TIME_FORMAT(NOW(), '%H:%i %S');
SELECT TIME_FORMAT(NOW(), '%H %i %S %p');
3. 时间与日期计算
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH);
SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR);
SELECT DATE_ADD(NOW(), INTERVAL -1 DAY);
SELECT DATEDIFF('2002-04-19', '2001-06-19');
SELECT DATEDIFF('2001-06-19', '2002-04-19');
SELECT TIME_TO_SEC('9:01');
SELECT TIME_TO_SEC('19:01') - TIME_TO_SEC('18:09');
4. 空值处理
SELECT order_id, IFNULL(shipper_id, 'Not assigned') AS shipper
FROM orders;
SELECT order_id, COALESCE(shipper_id,
comments, 'Not assigned') AS shipper
FROM orders;
5. 条件逻辑
SELECT order_id, order_date,
IF(YEAR(order_date) = YEAR(NOW()), 'Active', 'Archived') AS Category
FROM orders;
SELECT order_id,
CASE
WHEN YEAR(order_date) = YEAR(NOW()) THEN 'Active'
WHEN YEAR(order_date) = YEAR(NOW())
- 1 THEN 'Last year'
WHEN YEAR(order_date) < YEAR(NOW())
- 1 THEN 'Archived'
ELSE '....'
END AS Category
FROM orders;
作业
1. 空值处理
SELECT CONCAT(first_name, ' ',
last_name) AS Costomers,
COALESCE(phone, 'Unknown') AS phone
FROM customers;
2. IF 条件
SELECT product_id, name, COUNT(order_id) AS orders,
IF(COUNT(order_id) > 1, 'Many times', 'Once') AS Frequery
FROM products
JOIN order_items USING (product_id)
GROUP BY product_id, name;
3. CASE 条件
SELECT CONCAT(first_name, ' ',
last_name) AS Coustmers, points,
CASE
WHEN points < 1000 THEN 'C'
WHEN points >= 1000 AND points
< 2000 THEN 'B'
WHEN points >= 2000 THEN 'A'
END AS Category
FROM customers
ORDER BY points DESC;
总结
本次解析了日期与时间格式化(DATE_FORMAT、TIME_FORMAT)、时间计算(DATE_ADD、DATEDIFF)、空值处理(IFNULL、COALESCE)及条件逻辑(IF、CASE)。基于 sql_store 数据库。后续将探讨视图与存储过程。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。