我需要选择过去 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_TIME
用1900-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