SQL-仅获取2天前的数据

SQL-仅获取2天前的数据,sql,oracle,Sql,Oracle,我想获取n天前到2天前的数据(最早的数据) 以下是我的SQL请求: SELECT CDCATEGORY, DTLOGDATE FROM ERRORS 我该怎么做 在Oracle中,您可以从日期中减去天数 因此,假设DTLOGDATE是date,您可以执行以下操作: SELECT CDCATEGORY, DTLOGDATE FROM ERRORS WHERE DTLOGDATE > SYSDATE - 2 或者,如果你想要一整天: SELECT CDCATEGORY, DTLOGDATE

我想获取n天前到2天前的数据(最早的数据)

以下是我的SQL请求:

SELECT CDCATEGORY, DTLOGDATE
FROM ERRORS

我该怎么做

在Oracle中,您可以从
日期中减去天数

因此,假设
DTLOGDATE
date
,您可以执行以下操作:

SELECT CDCATEGORY, DTLOGDATE FROM ERRORS WHERE DTLOGDATE > SYSDATE - 2
或者,如果你想要一整天:

SELECT CDCATEGORY, DTLOGDATE FROM ERRORS WHERE DTLOGDATE > TRUNC(SYSDATE) - 2
试试这个:

SELECT CDCATEGORY, DTLOGDATE
FROM ERRORS where DTLOGDATE DTLOGDATE >= SYSDATE - n and DTLOGDATE <= SYSDATE - 2
选择CDCATEGORY,DTLOGDATE

从DTLOGDATE DTLOGDATE>=SYSDATE-n和DTLOGDATE的错误中,此代码将为您提供来自数据库(DTLOGDATE)的最后2天数据的最后日期

SELECT CDCATEGORY,  DTLOGDATE
FROM ERRORS
WHERE DTLOGDATE > (SELECT DATEADD(day, -2, MAX(DTLOGDATE) FROM ERRORS)

请尝试使用以下代码:

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

您需要计算最后一次获取数据的时间

您需要2019年12月12日00:00:00之前的数据,其中包括2019年12月11日之前的所有数据

使用以下查询:

SELECT CDCATEGORY, DTLOGDATE FROM ERRORS WHERE DTLOGDATE < TRUNC(SYSDATE) - 1;
从错误中选择CDCATEGORY,DTLOGDATE,其中DTLOGDATE

干杯

DTLOGDATE
的数据类型是什么?我添加了oracle标记。谢谢,但我不知道@startdate。如果创建存储过程,可以将'@n_day'作为参数传递。您的“@n_day”可以在存储过程中使用。比如:StartDate DATE=GETUTCDATE()-@n_day我有个问题,我们是12月13日。你的命令给我12月12日和13日的所有数据。我想要的是12月11日之前的所有数据。如果我试图用“@ClementRos:那么你想要12月11日00:00的数据,对吗?我想要12月之前的数据11@ClementRos)嗨,这很奇怪,因为根据你的命令,我在12月1日之前才有结果。我不明白为什么这不是我所期望的!!在您的数据库中从dual
中选择trunc(sysdate)-1的
结果是什么?2019-12-12 00:00:00.0