sql - 如何在 Oracle PLSQL 中获取给定年份所有十二个月的第一个日期和最后一个日期?
问题描述
如果我输入像“ 2021 ”这样的年份,我需要如下结果
Month Start Date End Date
1 1/1/2021 31/01/2021
2 1/2/2021 28/01/2021
.
.
.
.
.
.
.
.
.
12 1/12/2021 31/12/2021
解决方案
您也可以为此直接使用模型子句。
SELECT n
, TO_DATE(&the_year||lpad(f, 2, '0'), 'YYYYMM') start_dt
, last_day(TO_DATE(&the_year||lpad(f, 2, '0'), 'YYYYMM')) end_dt
FROM DUAL
MODEL
DIMENSION by (1 as n)
MEASURES (1 as f)
RULES (
f[FOR n FROM 1 TO 12 INCREMENT 1 ] = cv(n)
)
;
模型子句的优点是,如果您以后想要每隔一个月获得一次,只需将增量从 1 更改为 2。或者如果您正在寻找一年中的季度月(一月、四月、七月、十月),您只需要将增量从 1 更改为 3,依此类推...
推荐阅读
- asp.net-mvc - 模型和视图模型之间传递错误?
- python - python:使用 numpy 数组输入调用 c++
- google-cloud-platform - (gcloud.tasks.queues.create) PERMISSION_DENIED: 'locations/asia-south1' 的权限被拒绝
- ruby-on-rails - Rails / Ruby方法/正则表达式增加字符串的数字部分?
- go - 总是去获取一个预发布版本
- python - 每次循环运行时在 Django 模板中显示值
- java - 如何查找和使用每个 Java 支持的平台默认字符集?
- android - 无法在 Android Studio 中找到 adb
- python - 如何使用 argparse 在控制台中执行多个参数?
- git - 稀疏结帐但排除或忽略根目录中的文件?