Menu
CoddyTech

处理日期(第 3 部分)

本课属于 Coddy SQL 学习旅程的“基础知识”单元。第 33 课,共 72 课。

SQL 提供了多个实用函数,可用于处理和格式化日期。以下是一些常见的日期函数:

  1. DATE() - 将字符串转换为日期
  2. STRFTIME() - 根据指定参数格式化日期
  3. 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')
challenge icon

挑战

简单

可用的表和列:

  • 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() 将结果四舍五入为整数。

亲手试试

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: SQL 在线编辑器