SQL-仅获取2天前的数据

时间:2019-12-13 10:54:20

标签: sql oracle

我想获取n天前到2天前的数据(最有效的数据)。

这是我的SQL请求:

SELECT CDCATEGORY, DTLOGDATE
FROM ERRORS

我该怎么做?

5 个答案:

答案 0 :(得分:1)

在Oracle中,您可以从date减去几天。

因此,假设DTLOGDATEdate,您可以这样做:

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;

干杯!