【发布时间】:2019-12-18 06:27:39
【问题描述】:
我想在 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 服务器上使用相同的脚本。
【问题讨论】:
-
我认为一个简单的谷歌搜索可以为您返回所需的结果。见mandsconsulting.com/…
-
@XING 我猜你没有完整阅读我的帖子。
-
您的文本和 T-SQL 相互矛盾。
getdate()获取当前日期(和时间)而不是当月的第一天。你真正想要哪一个? -
@stickybit 这只是一个例子。不想写 dateadd.... 等
-
@TaylorN 您可以在
DECLARE之后使用BEGIN和END将值存储在变量中。正如您所提到的,您有第一天和最后一天的查询,只需使用该块来分配变量,如我的答案所示
标签: sql oracle plsql oracle11g