处理日期(第 3 部分)
本课属于 Coddy SQL 学习旅程的“基础知识”单元。第 33 课,共 72 课。
SQL 提供了多个实用函数,可用于处理和格式化日期。以下是一些常见的日期函数:
DATE()- 将字符串转换为日期STRFTIME()- 根据指定参数格式化日期DATE('now')- 获取当前日期:
例如,将字符串转换为日期:
SELECT DATE('2023-05-15 13:45:00')
-- 返回:2023-05-15
SELECT DATE('now')
-- 返回当前日期例如,从日期中提取年、月和日:
-- 获取年份
SELECT STRFTIME('%Y', '2023-05-15')
-- 返回:2023
-- 获取月份
SELECT STRFTIME('%m', '2023-05-15')
-- 返回:05
-- 获取日期
SELECT STRFTIME('%d', '2023-05-15')
-- 返回:15
-- 显示年份和日期的组合(可以使用任意分隔符)
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- 返回:2023:15
-- 改用连字符作为分隔符
SELECT STRFTIME('%d-%m-%Y', '2023-05-15')
-- 返回:15-05-2023
-- 获取星期几
SELECT STRFTIME('%w', '2023-05-15')
-- 返回:1(星期一;星期日是 0)常见的格式说明符:
- %Y:年份(4 位数字)
- %m:月份(01-12)
- %d:日(01-31)
- %w:星期几(0-6,星期日为 0)
- %H:小时(00-23)
- %M:分钟(00-59)
- %S:秒(00-59)
你可以在说明符之间使用任意分隔符(例如 -、:、/)。例如,STRFTIME('%d-%m-%Y', date) 和 STRFTIME('%d:%m:%Y', date) 都会组合日、月和年,只是使用了不同的分隔符。
你可以在查询中组合使用这些函数:
-- 查找今年的所有记录
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')挑战
简单可用的表和列:
events:id、start、end
编写一个查询,显示以下内容:
- 事件 ID
- 将开始日期格式化为 "DD-MM-YYYY"。将此列命名为
formatted_start - 将结束日期格式化为 "DD-MM-YYYY"。将此列命名为
formatted_end - 开始日期与结束日期之间的时长(天),四舍五入到最接近的整数。将此列命名为
duration_days
仅筛选 start 列年份为 2009 的行(STRFTIME() 返回的是字符串,而不是数字)。
按时长(天)降序排列结果。
提醒:要计算日期之间的差值,请使用:JULIANDAY(end) - JULIANDAY(start),并使用 ROUND() 将结果四舍五入为整数。
亲手试试
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: SQL 在线编辑器