在 Oracle 数据库中,你可以使用 `LAST_DAY` 函数来获取每个月的最后一天。为了生成 2024 年每个月月底的日期,可以结合 `LAST_DAY` 和 `ADD_MONTHS` 函数来实现。
以下是一个示例查询:
```sql
SELECT
ADD_MONTHS(DATE '2024-01-01', LEVEL - 1) AS month_start,
LAST_DAY(ADD_MONTHS(DATE '2024-01-01', LEVEL - 1)) AS month_end
FROM
DUAL
CONNECT BY
LEVEL <= 12;
```
这个查询的解释如下:
- `DATE '2024-01-01'` 是一个日期字面量,表示 2024 年 1 月 1 日。
- `ADD_MONTHS(DATE '2024-01-01', LEVEL - 1)` 会为每一行添加相应的月份偏移量(从 0 到 11),从而生成 2024 年每个月的第一天。
- `LAST_DAY` 函数用于将每个月的第一天转换为该月的最后一天。
- `CONNECT BY LEVEL <= 12` 生成 12 行数据,对应 2024 年的 12 个月。
运行上述查询将返回 2024 年每个月的开始日期和结束日期。如果你只需要月底的日期,可以只选择 `month_end` 列:
```sql
SELECT
LAST_DAY(ADD_MONTHS(DATE '2024-01-01', LEVEL - 1)) AS month_end
FROM
DUAL
CONNECT BY
LEVEL <= 12;
```
这将返回 2024 年每个月的最后一天。