- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 备份数据库
- SQL 表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 修改表
- SQL - 删除表
- SQL - 删除表数据
- SQL - 约束
- SQL 查询
- SQL - 插入查询
- SQL - 选择查询
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - 更新查询
- SQL - 删除查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布尔 (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION 与 UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接与右连接
- SQL - UNION 与 JOIN
- SQL 密钥
- SQL - 唯一键
- SQL - 主键
- SQL - 外键
- SQL - 组合键
- SQL - 备选键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - 唯一索引
- SQL - 集群索引
- SQL - 非集群索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - MIN & MAX
- SQL - NULL 函数
- SQL - 检查约束
- SQL - 默认约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 公共表表达式
- SQL - GROUP BY 与 ORDER BY
- SQL - IN 与 EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - EOMONTH() 函数
SQL 的EOMONTH()函数用于返回指定日期值的月份的最后一天,并带有一个可选的偏移量。
语法
以下是 SQL EOMONTH() 函数的语法:
EOMONTH(start_date, [offset])
参数
此函数接受两个参数。具体描述如下:
start_date − 指定要查找其月份最后一天的日期或日期时间值。
offset − 指定在开始日期之前或之后的天数。这是一个可选参数。如果省略偏移量,则函数返回月份的最后一天。
示例
以下示例演示了 SQL EOMONTH() 函数的用法:
SQL> SELECT EOMONTH('2023-02-17') AS END_OF_MONTH;
输出
执行上述查询后,将获得如下输出:
+--------------+ | END_OF_MONTH | +--------------+ | 2023-02-28 | +--------------+
示例
我们可以使用 GETDATE() 函数作为 EOMONTH() 函数的参数,它将检索当前月份的最后一天。
SQL> SELECT EOMONTH(GETDATE()) AS END_OF_MONTH;
输出
如果我们执行上述查询,则结果如下:
+--------------+ | END_OF_MONTH | +--------------+ | 2023-02-28 | +--------------+
示例
我们可以使用以下查询将当前月份的最后一天增加 6 个月:
SQL> SELECT EOMONTH(GETDATE(), 6) AS END_OF_MONTH;
输出
执行上述查询后,输出将显示如下:
+--------------+ | END_OF_MONTH | +--------------+ | 2023-08-31 | +--------------+
示例
我们可以使用以下查询将当前月份的最后一天减少 2 个月:
SQL> SELECT EOMONTH(GETDATE(), -2) AS END_OF_MONTH;
输出
执行上述查询后,将获得如下输出:
+--------------+ | END_OF_MONTH | +--------------+ | 2023-12-31 | +--------------+
示例
在以下示例中,我们尝试使用以下查询检索当前月份的天数:
SQL> SELECT DAY(EOMONTH(CURRENT_TIMESTAMP)) AS NO_OF_DAYS_IN_MONTH;
输出
如果我们执行上述查询,则结果如下:
+---------------------+ | NO_OF_DAYS_IN_MONTH | +---------------------+ | 28 | +---------------------+
示例
在这里,我们尝试使用以下查询从指定的日期值检索天数:
SQL> SELECT DAY(EOMONTH('2023-04-13')) AS NO_OF_DAYS_IN_MONTH;
输出
执行上述查询后,将获得如下输出:
+---------------------+ | NO_OF_DAYS_IN_MONTH | +---------------------+ | 30 | +---------------------+
示例
假设我们在 SQL 数据库中使用 CREATE 语句创建了一个名为 CALENDAR 的表,如下面的查询所示:
SQL> CREATE TABLE CALENDAR(MONTHS DATE NOT NULL);
现在,让我们使用 INSERT 语句在 CALENDER 表中插入一些记录,如下面的查询所示:
SQL> INSERT INTO CALENDAR (MONTHS) VALUES('2023-01-01'); INSERT INTO CALENDAR (MONTHS) VALUES('2023-02-01'); INSERT INTO CALENDAR (MONTHS) VALUES('2023-03-01'); INSERT INTO CALENDAR (MONTHS) VALUES('2023-04-01'); INSERT INTO CALENDAR (MONTHS) VALUES('2023-05-01'); INSERT INTO CALENDAR (MONTHS) VALUES('2023-06-01'); INSERT INTO CALENDAR (MONTHS) VALUES('2023-07-01'); INSERT INTO CALENDAR (MONTHS) VALUES('2023-08-01'); INSERT INTO CALENDAR (MONTHS) VALUES('2023-09-01'); INSERT INTO CALENDAR (MONTHS) VALUES('2023-10-01'); INSERT INTO CALENDAR (MONTHS) VALUES('2023-11-01'); INSERT INTO CALENDAR (MONTHS) VALUES('2023-12-01');
我们可以使用以下查询验证表是否已创建:
SQL> SELECT * FROM CALENDAR;
CALENDAR 表已成功在 SQL 数据库中创建。
+------------+ | MONTHS | +------------+ | 2023-01-01 | | 2023-02-01 | | 2023-03-01 | | 2023-04-01 | | 2023-05-01 | | 2023-06-01 | | 2023-07-01 | | 2023-08-01 | | 2023-09-01 | | 2023-10-01 | | 2023-11-01 | | 2023-12-01 | +------------+
我们可以使用以下查询显示每个日历月份的总天数:
SQL> SELECT MONTHS, DAY(EOMONTH(MONTHS)) AS NO_OF_DAYS_IN_MONTH FROM CALENDAR;
输出
执行上述查询后,将获得如下输出:
+------------+---------------------+ | MONTHS | NO_OF_DAYS_IN_MONTH | +------------+---------------------+ | 2023-01-01 | 31 | | 2023-02-01 | 28 | | 2023-03-01 | 31 | | 2023-04-01 | 30 | | 2023-05-01 | 30 | | 2023-06-01 | 31 | | 2023-07-01 | 30 | | 2023-08-01 | 31 | | 2023-09-01 | 30 | | 2023-10-01 | 31 | | 2023-11-01 | 30 | | 2023-12-01 | 31 | +------------+---------------------+
示例
让我们使用 CREATE 语句在 SQL 数据库中创建另一个名为VEHICLE_RENTALS的表,如下面的查询所示:
SQL> CREATE TABLE VEHICLE_RENTALS(ID INT NOT NULL, CUSTOMER_NAME VARCHAR (200) NOT NULL, VEHICLE VARCHAR (200), RENTED_DATE DATE NOT NULL)
现在,让我们使用 INSERT 语句在 VEHICLE_RENTALS 表中插入一些记录,如下面的查询所示:
SQL> INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(1, 'Dhruv', 'Activa', '2023-12-05'); INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(2, 'Arjun','Access', '2023-03-01'); INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(3, 'Dev','Jupiter', '2023-03-15'); INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(4, 'Riya','Pept', '2023-12-05'); INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(5, 'Aarohi','Vespa', '2023-05-02'); INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(6, 'Lisa','Aviator', '2023-11-25'); INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(7, 'Roy','Aprilia', '2023-05-30');
我们可以使用以下查询验证表是否已创建:
SQL> SELECT * FROM VEHICLE_RENTALS;
VEHICLE_RENTALS 表已成功在 SQL 数据库中创建。
+----+---------------+---------+-------------+ | ID | CUSTOMER_NAME | VEHICLE | RENTED_DATE | +----+---------------+---------+-------------+ | 1 | Dhruv | Activa | 2023-12-05 | | 2 | Arjun | Access | 2023-03-01 | | 3 | Dev | Jupiter | 2023-03-15 | | 4 | Riya | Pept | 2023-12-05 | | 5 | Aarohi | Vespa | 2023-05-02 | | 6 | Lisa | Aviator | 2023-11-25 | | 7 | Roy | Aprilia | 2023-05-30 | +----+---------------+---------+-------------+
我们可以使用以下查询显示租用车辆的归还日期(月末):
SQL> SELECT CUSTOMER_NAME, VEHICLE, RENTED_DATE, EOMONTH(RENTED_DATE) AS RETURN_DATE FROM VEHICLE_RENTALS;
输出
如果我们执行上述查询,则结果如下:
+----+---------------+---------+-------------+-------------+ | ID | CUSTOMER_NAME | VEHICLE | RENTED_DATE | RETURN_DATE | +----+---------------+---------+-------------+-------------+ | 1 | Dhruv | Activa | 2023-12-05 | 2023-12-31 | | 2 | Arjun | Access | 2023-03-01 | 2023-03-31 | | 3 | Dev | Jupiter | 2023-03-15 | 2023-03-31 | | 4 | Riya | Pept | 2023-12-05 | 2023-12-31 | | 5 | Aarohi | Vespa | 2023-05-02 | 2023-05-31 | | 6 | Lisa | Aviator | 2023-11-25 | 2023-11-30 | | 7 | Roy | Aprilia | 2023-05-30 | 2023-05-31 | +----+---------------+---------+-------------+-------------+