我想声明一些包含 Oracle 中当月的第一个和最后一个日期的变量。我知道如何获取这些值,但显然不存储或使用它们;我更喜欢 T-SQL。
在 T-SQL 中,我可以这样写:
DECLARE @startDate DATE = GETDATE();
DECLARE @endDate DATE = EOMONTH(GETDATE());
SELECT *
FROM SomeTable
WHERE SomeDate BETWEEN @startDate AND @endDate;
我一生都无法弄清楚如何在 Oracle 中执行此操作。我尝试了几种变体,例如:
DECLARE END_DT DATE := TRUNC(LAST_DAY(SYSDATE))
END_DT DATE := TRUNC(LAST_DAY(SYSDATE))
DECLARE END_DT DATE;
SELECT TRUNC(LAST_DAY(SYSDATE)) INTO END_DT FROM DUAL;
我主要使用 11g,但我希望也能够在 9i/10g 服务器上使用相同的脚本。
最佳答案
您可以使用这样的查询来检测当月的第一天和最后一天:
SELECT TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE,-1)))+1,
TRUNC(LAST_DAY(SYSDATE))
INTO :startDate,:endDate
FROM DUAL;
贡献者ADD_MONTHS()
功能
更新:或者使用此 PL/SQL 代码块:
DECLARE
startDate date;
endDate date;
BEGIN
startDate := TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE,-1)))+1;
endDate := TRUNC(LAST_DAY(SYSDATE));
DBMS_OUTPUT.PUT_LINE ('startDate : '||startDate);
DBMS_OUTPUT.PUT_LINE ('endDate : '||endDate);
END;
/
关于sql - 将每月的第一天和最后一天放入变量中 - Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59386550/