如何在oracle中不使用日期函数的情况下获取最后一天的前一个月?
SQL> ed
Wrote file afiedt.buf
1 SELECT LAST_DAY(ADD_MONTHS(sysdate,-1))
2* from dual
SQL> /
LAST_DAY(
---------
30-JUN-14
但我想不使用日期功能
答案 0 :(得分:0)
创建日历表。
此处示例:
http://social.technet.microsoft.com/wiki/contents/articles/22776.t-sql-calendar-table.aspx
还有这个问题:
Calendar table for Data Warehouse
您必须调整日期函数才能在oracle中运行。但这样可以让你在一次性加载后没有数据库特定功能的情况下进行日期逻辑。
答案 1 :(得分:0)
您还没有明确指出您可以使用哪些功能,或者为什么使用这些功能,所以我不知道您是否可以通过任何限制来实现这一功能。 :
select trunc(sysdate, 'MM') - 1
from dual;
TRUNC(SYSDATE,'MM')-1
---------------------
30-JUN-14
这种形式的the trunc()
function会为您提供日期"当天的时间部分被截断为格式模型"指定的单位,尽管这有点误导您的日期不限于时间格式元素。在这里,我使用了格式模型'MM'
,因此它会截断到当前月份的第一个。前一天是前一个月的最后一天。
但trunc()
仍然是日期函数,具体取决于您的定义;也许更重要的是它仍然是特定于Oracle的语法,您可能会出于某种原因试图避免这种语法。但是也不允许使用sysdate
。