我想获取n天前到2天前的数据(最有效的数据)。
这是我的SQL请求:
SELECT CDCATEGORY, DTLOGDATE
FROM ERRORS
我该怎么做?
答案 0 :(得分:1)
在Oracle中,您可以从date
减去几天。
因此,假设DTLOGDATE
是date
,您可以这样做:
SELECT CDCATEGORY, DTLOGDATE FROM ERRORS WHERE DTLOGDATE > SYSDATE - 2
或者,如果您需要一整天,则可以:
SELECT CDCATEGORY, DTLOGDATE FROM ERRORS WHERE DTLOGDATE > TRUNC(SYSDATE) - 2
答案 1 :(得分:0)
尝试一下:
SELECT CDCATEGORY, DTLOGDATE
FROM ERRORS where DTLOGDATE DTLOGDATE >= SYSDATE - n and DTLOGDATE <= SYSDATE - 2
答案 2 :(得分:0)
此代码将从数据库(DTLOGDATE)的最后日期为您提供最后2天的数据。
SELECT CDCATEGORY, DTLOGDATE
FROM ERRORS
WHERE DTLOGDATE > (SELECT DATEADD(day, -2, MAX(DTLOGDATE) FROM ERRORS)
答案 3 :(得分:0)
请尝试使用以下代码:
DECLARE @ERRORS TABLE (CDCATEGORY NVARCHAR(100),DTLOGDATE DATE)
DECLARE @StartDate DATE = GETUTCDATE() - 10, -- Your 'n' days
@EndDate DATE = GETUTCDATE() - 02
INSERT INTO @ERRORS
VALUES
('A','2019-12-01'),
('B','2019-12-05'),
('Z','2019-12-06'),
('R','2019-12-07'),
('Y','2019-12-10'),
('A','2019-12-11'),
('G','2019-12-12'),
('C','2019-12-13')
SELECT
CDCATEGORY,
DTLOGDATE
FROM
@ERRORS
WHERE
DTLOGDATE BETWEEN @StartDate AND @EndDate
答案 4 :(得分:0)
您需要计算直到需要数据的最后时间。
您想要12-dec-2019 00:00:00
之前的数据,其中将包括在{strong> 11-dec-2019
或之前的所有数据。
使用以下查询:
SELECT CDCATEGORY, DTLOGDATE FROM ERRORS WHERE DTLOGDATE < TRUNC(SYSDATE) - 1;
干杯!