数据库查询x天没有数据

时间:2017-09-19 05:27:48

标签: sql-server tsql

我的表包含多个名称和DT的记录,我需要一个查询,根据DT检查名称在过去2天内没有任何新记录,如何创建

Name     DT
ABC      2017-09-17 06:02:23.000
ACD      2017-09-15 06:02:23.000

3 个答案:

答案 0 :(得分:1)

在不知道您的表架构或示例数据的情况下,这是对查询的疯狂猜测,但您想要的是GETDATE() function。如果您想使用UTC时间,您还可以使用GETUTCDATE() function

修改:已更新,以包含ROW_NUMBER() function

编辑2:用CTE替换GETDATE()where子句,以排除在过去2天内具有dt的名称。

WITH CTE AS (
SELECT
    name
FROM table
WHERE dt > GETDATE()-2
)

SELECT
    name,
    dt
FROM (
    SELECT
        name,
        dt,
        ROW_NUMBER() OVER (PARTITION BY name ORDER BY dt desc) AS rn
    FROM table
    LEFT JOIN CTE ON
        table.name = CTE.name
    WHERE CTE.name IS NULL
    ) tbl
WHERE rn = 1

答案 1 :(得分:1)

我想你需要这样的东西:

SELECT Name,dt
from
(SELECT Name,MAX(dt) dt
FROM your_table
GROUP BY NAME) a
where dt < GETDATE()-2

答案 2 :(得分:0)

BEGIN TRAN

CREATE TABLE #CM (Name  NVARCHAR(06), DT DATETIME)


INSERT INTO #CM
SELECT  'ABC','2017-09-17 06:02:23.000' UNION ALL
SELECT  'ACD','2017-09-15 06:02:23.000'


SELECT * FROM #CM
WHERE CONVERT(NVARCHAR(105),dt) < CONVERT(NVARCHAR(105),GETDATE()-2)

ROLLBACK TRAN