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。
GO TO FULL VERSION