在两列中选择过去 15 分钟日期和时间中更改的记录



我需要选择过去 15 分钟内更改的记录,这行得通吗?

--Select changed records
USE PC
SELECT        
    PEOPLE_CODE, PEOPLE_ID, PEOPLE_CODE_ID, PREVIOUS_ID, 
    FIRST_NAME, MIDDLE_NAME, LAST_NAME, REVISION_DATE, REVISION_TIME
FROM
    PEOPLE
WHERE 
    REVISION_DATE >= getdate()
    --Also need to check for time
    AND REVISION_TIME >=  dateadd(minute,-15,getdate()) --Test record
ORDER BY 
    REVISION_DATE DESC, REVISION_TIME DESC
我想

你就在那里,只需要组合日期和时间列值。您可以使用隐式或显式方法执行此操作。隐式的优点是编写起来快速简便。显式选项的优点是,如果REVISION_DATE列曾经用00:00:00.000以外的内容填充时间部分,或者REVISION_TIME1900-01-01以外的内容填充日期部分,它仍将按预期工作。

含蓄:

USE PC
SELECT        
    PEOPLE_CODE, PEOPLE_ID, PEOPLE_CODE_ID, PREVIOUS_ID, 
    FIRST_NAME, MIDDLE_NAME, LAST_NAME, REVISION_DATE, REVISION_TIME
FROM
    PEOPLE
WHERE 
    (REVISION_DATE + REVISION_TIME) >=  dateadd(minute,-15,getdate())
ORDER BY 
    REVISION_DATE DESC, REVISION_TIME DESC

明确:

USE PC
SELECT        
    PEOPLE_CODE, PEOPLE_ID, PEOPLE_CODE_ID, PREVIOUS_ID, 
    FIRST_NAME, MIDDLE_NAME, LAST_NAME, REVISION_DATE, REVISION_TIME
FROM
    PEOPLE
WHERE 
    (dateadd(d, datediff(d, 0, REVISION_DATE), 0) + dateadd(d, -datediff(d, 0, REVISION_TIME), REVISION_TIME)) >=  dateadd(minute,-15,getdate())
ORDER BY 
    REVISION_DATE DESC, REVISION_TIME DESC

最新更新