oracle - 根据 SYSDATE 获取特定月份的月度数据
问题描述
我每月运行一次查询,以选择基于月份 JAN、FEB、MAR、APR、SEP OCT、NOV、DEC 的数据。
假设我在 2018 年 2 月运行此查询,那么 JAN 和 FEB 的数据应该来自当年(2018 年),而来自 MAR、APR、SEP OCT、NOV、DEC 的数据应该来自上一年(2017 年)。我如何用 SYSDATE 处理这个问题。
>SELECT * FROM MY_TABLE WHERE MONTH_NAME
IN ('JAN','FEB','MAR','APR','SEP','OCT','NOV','DEC')
AND
YEAR=TO_CHAR(TRUNC(SYSDATE),'YYYY');
假设我有列 MONTH_NAME 具有所有月份名称和 YEAR 与年份匹配记录。
解决方案
如果没有样本数据,很难说出您到底想要什么,但它可能是这样的。
SELECT *
FROM my_table
WHERE month_name IN ( 'JAN', 'FEB', 'MAR', 'APR',
'SEP', 'OCT', 'NOV', 'DEC' )
AND (
( EXTRACT ( MONTH FROM TO_DATE( month_name ,'MON' ) )
<= EXTRACT ( MONTH FROM SYSDATE ) AND YEAR = 2018) OR
( EXTRACT ( MONTH FROM TO_DATE( month_name ,'MON' ) )
> EXTRACT ( MONTH FROM SYSDATE ) AND YEAR = 2017)
)
最好添加 'NLS_DATE_LANGUAGE = ENGLISH'
为的第三个参数TO_DATE
推荐阅读
- c - Kubernetes 中发送消息的 TCP 套接字连接干扰
- r - 通过 dbplyr/bigRquery 将 summarise() 调用中的分位数返回到 BigQuery SQL 数据库
- swift - WKWebView 不调用导航委托方法
- pandas - PyODBC+Pandas+Read_SQL:错误:游标的连接已关闭
- java - 如何使用 Maven 将 Clojure 依赖项包含到 Java 项目中
- python - 无法使用 python 库:'paramiko' 与 AWS Lambda
- html - CSS 响应式分页
- javascript - 如何防止登录用户访问登录页面?
- python - 在这个排序算法中,元组的返回语句中的 0 索引去了哪里?
- python - Python 编程{副作用}