【发布时间】:2017-03-17 15:31:26
【问题描述】:
我希望在 Oracle 中返回从周日开始到周六结束的最后一周的数据。这需要能够在一周中的任何一天运行。
所以我知道这在 SQL Server 中是可能的,因为我有报告执行完全相同的操作:-
SET @startdate = DATEADD(wk, -1, DATEADD(wk, DATEDIFF(wk, 0,getdate()), -1))
SET @enddate = DATEADD(wk, DATEDIFF(wk, 0, getdate()), -1)
今天是 3 月 17 日星期五,上面将返回 3 月 5 日星期日和 3 月 11 日星期六之间的数据。
我想在 Oracle 中做同样的事情。到目前为止,我所看到的所有地方都返回了这样的结果:-
SELECT TRUNC (SYSDATE) - (SELECT TO_CHAR (SYSDATE, 'D') FROM DUAL),
TRUNC (SYSDATE) - (SELECT TO_CHAR (SYSDATE, 'D') + 1 FROM DUAL)
FROM DUAL
或者
SELECT SYSDATE AS TODAYS_DATE,
NEXT_DAY (SYSDATE - 7, 'SAT') AS PREV_SATURDAY,
NEXT_DAY (SYSDATE - 7, 'SUN') AS PREV_SUNDAY
FROM DUAL
我试图避免使用任何 'sysdate-7' 类型的代码,因为在这种情况下这非常笨拙 - 任何人都可以提供帮助吗?
谢谢
【问题讨论】:
-
sysdate是否比 MSSQL 代码更笨拙? -
笨拙?在什么方面?
-
关于我需要在一周中的每一天编码。
标签: sql oracle date-arithmetic