English 中文(简体)
Oracle数据差异
原标题:
  • 时间:2008-09-24 11:42:42
  •  标签:

(Oracle)我必须返回过去12个月的所有记录。如何在PL/SQL中做到这一点?

编辑:对不起,我忘记解释了,我有一列数据类型的

问题回答

在PL/SQL中这样做与在SQL中这样做几乎是同义的。

SELECT *
FROM   table
WHERE  date_column >= ADD_MONTHS(TRUNC(SYSDATE),-12)

您可能想摆弄TRUNC语句来获得您想要的范围——我使用了TRUNC(SYSDATE),它与TRUNC(SYSTATE,D)相同——即删除SYSDATE的时间部分。例如,如果当前为8月12日,但您想要2月1日的值而不是2月12日的值,则使用:

SELECT *
FROM   table
WHERE  date_column >= ADD_MONTHS(TRUNC(SYSDATE, MM ),-12)

此外,请参阅文档,了解不同天数月份的治疗方法:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions004.htm#SQLRF00603

SELECT *
FROM   table
WHERE  date_column > ADD_MONTHS(SYSDATE, -12)

不确定我是否应该为之前的帖子做下修改。。。只是想帮忙。

SELECT *
FROM   table
WHERE  date_column > SYSDATE - 365




相关问题
热门标签