oracle - oracle如何获取上个月或上两个月的数据
问题描述
如何在 oracle 中获取上个月或上两个月的数据。我的日期格式是 YYYY、MM、DD。
从谷歌搜索我得到了那些解决方案,
select * from IM_LAPTOP
where ADD_DATE >= add_months(sysdate, -12);
select *
from IM_LAPTOP
where ADD_DATE between add_months(trunc(sysdate,'mm'),-1) and last_day(add_months(trunc(sysdate,'mm'),-1));
但它显示不是一个有效的月份
解决方案
我的日期格式是 YYYY,MM,DD
除非您使用字符串来存储日期,否则,不,它不是;aDATE
是二进制数据类型(由 1 字节组成:世纪、世纪年、月、日、小时、分钟和秒,并且始终具有这些组件)并且没有格式。
oracle如何获取上个月或上两个月的数据
要从该时刻之前的 2 个月获取数据(即,如果现在是现在2021-04-05 16:39:24
并且您希望从2021-02-05 16:39:24
2 个月前获取),那么:
SELECT *
FROM your_table
WHERE date_column >= ADD_MONTHS( SYSDATE, -2 )
要获取从上个月第一天午夜开始的数据:
SELECT *
FROM your_table
WHERE date_column >= ADD_MONTHS( TRUNC( SYSDATE, 'MM' ), -1 )
如果您只想要上个月的数据,那么:
SELECT *
FROM your_table
WHERE date_column >= ADD_MONTHS( TRUNC( SYSDATE, 'MM' ), -1 )
AND date_column < TRUNC( SYSDATE, 'MM' )
如果您的“日期”实际上是VARCHAR2
具有格式的列,YYYY,MM,DD
那么您应该将其更改为DATE
列,但如果由于某种原因您不能,那么至少这些字符按重要性从高到低的顺序排列,您可以执行字母数字比较和只需将过滤器的右侧包装在TO_CHAR
:
SELECT *
FROM your_table
WHERE date_column >= TO_CHAR( ADD_MONTHS( SYSDATE, -2 ), 'YYYY,MM,DD' )
推荐阅读
- database - Laravel belongsToMany 保存不尊重主键
- java - 我还应该如何调用反向函数?对 Rlist 执行反向时,输出仅显示一个链接
- html - CSS display inline 和 float 在包装器中不起作用
- lua - Lua可以做算术右移吗?
- hook-woocommerce - Woocommerce order.updated webhook 并不总是触发
- pyspark - 分析查询 - Spark Streaming 上的 dense_rank
- python - 如何存储从用户输入创建的变量并在 Python 中的不同文件中使用它?
- tensorflow - 图像分类模型重新校准
- graph - Gremlin query to get affected nodes from the Cosmos graph
- java - 我在尝试运行包含 main() 方法的类时收到 IllegalAccessError