3.1 处理日期和时间的函数列表
日期和时间是数据库中存储的最常见的数据类型之一。这就是为什么使用它们的函数列表非常大。以下是最受欢迎的:
# | 功能 | 描述 |
---|---|---|
1个 | CURDATE() | 返回当前日期 |
2个 | 时间() | 返回当前时间 |
3个 | 现在(),当地时间() | 返回当前日期和当前时间 |
4个 | 年() | 从日期返回年份 |
5个 | 月() | 返回日期中的月份 |
6个 | 日(),日月() | 返回日期中的日期 |
7 | 小时() | 仅从时间返回数小时 |
8个 | 分钟() | 宣布时间分钟 |
9 | 第二() | 从时间返回秒数 |
10 | 日名() | 返回星期几的名称:星期一,... |
十一 | 月名() | 返回月份名称:January, ... |
12 | 星期() | 从日期返回周 |
13 | 工作日() | 返回星期几的数字:星期一 - 0,星期二 - 1 |
14 | 年周() | 返回一年中的第几周 |
15 | 星期几() | 返回星期几的数字:周日 - 1,周一 - 2 |
16 | 年年日() | 返回一年中的第几天:1-366 |
17 | 日期() | 仅返回“datetime”对象的日期 |
18 | 添加() | 向日期添加天数 |
19 | SUBDATE() | 从日期中减去天数 |
20 | 添加时间() | 不定时添加 |
21 | 子时间() | 从时间中减去时间 |
我特意将功能分成小组,以便更容易理解如何使用它们。下面我们将考虑每组中的一个函数。
您可以在链接中找到用于处理日期和时间的函数的完整列表: https: //dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
3.2 调用函数
顺便说一句,既然我们正在学习这么多函数,我认为提及运算符SELECT
不必与 一起使用是有帮助的FROM
。它可以返回任何表达式的值。模板给出了其一般视图:
SELECT expression
如果你想调用一些函数,那么你需要编写如下代码:
SELECT function(options)
SELECT
下面我将给出一些不借助表格的运算符的操作示例:
# | 要求 | 结果 |
---|---|---|
1个 | 选择 1+1 | 2个 |
2个 | 选择 13 MOD 5 | 3个 |
3个 | 选择兰德() | 0.20771444235715497 |
4个 | 选择CURDATE() | 2022-06-04 |
5个 | 选择时间() | 00:06:02 |
6个 | 现在选择() | 2022-06-04 00:06:43 |
而且,如您所见,在上表中,为了获取当前日期和时间,您只需要使用以下函数之一:
CURDATE()
- 当前日期;CURTIME()
- 当前时间;NOW()
– 当前日期和时间。
3.3 按年月分组数据
让我们回忆一下我们的任务表,其中包含员工的任务。让我们尝试按年份对该表中的任务进行分组。为此,我们使用函数YEAR()
,它返回传递给它的日期的年份。
我们查询的第一个版本将如下所示:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
deadline
FROM task
此查询的结果将是:
ID | 员工ID | 姓名 | 年 | 最后期限 |
---|---|---|---|---|
1个 | 1个 | 修复一个前端bug | 2022年 | 2022-06-01 |
2个 | 2个 | 修复后端的一个bug | 2022年 | 2022-06-15 |
3个 | 5个 | 买咖啡 | 2022年 | 2022-07-01 |
4个 | 5个 | 买咖啡 | 2022年 | 2022-08-01 |
5个 | 5个 | 买咖啡 | 2022年 | 2022-09-01 |
6个 | (无效的) | 打扫办公室 | (无效的) | (无效的) |
7 | 4个 | 享受生活 | (无效的) | (无效的) |
8个 | 6个 | 享受生活 | (无效的) | (无效的) |
我们可以看到所有行都有相同的年份,所以让我们使用两个字段 - 年份和月份。我们查询的第二个版本将如下所示:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
MONTH(deadline) AS month,
deadline
FROM task
此查询的结果将是:
ID | 员工ID | 姓名 | 年 | 月 | 最后期限 |
---|---|---|---|---|---|
1个 | 1个 | 修复一个前端bug | 2022年 | 6个 | 2022-06-01 |
2个 | 2个 | 修复后端的一个bug | 2022年 | 6个 | 2022-06-15 |
3个 | 5个 | 买咖啡 | 2022年 | 7 | 2022-07-01 |
4个 | 5个 | 买咖啡 | 2022年 | 8个 | 2022-08-01 |
5个 | 5个 | 买咖啡 | 2022年 | 9 | 2022-09-01 |
6个 | (无效的) | 打扫办公室 | (无效的) | (无效的) | (无效的) |
7 | 4个 | 享受生活 | (无效的) | (无效的) | (无效的) |
8个 | 6个 | 享受生活 | (无效的) | (无效的) | (无效的) |
我不会告诉你如何按年和月对任务进行分组——你已经学过这个:使用运算符GROUP BY
。