设置日期时间变量的时间部分

NA *_*ker 13 sql t-sql sql-server datetime

我正在进行一项自动化作业的查询.它需要查找最后一天晚上8点到晚上8点之间的所有交易.我在考虑做这样的事情

DECLARE @start_date DATETIME
DECLARE @end_date DATETIME

SET @start_date = DATEADD(DAY, -2, GETDATE())
SET @end_date = DATEADD(DAY, -1, GETDATE())
Run Code Online (Sandbox Code Playgroud)

对于自动查询,这很适合计算日期部分.但变量的TIME部分是查询执行的当前时间.是否有一种快速简单的方法可以将两个变量的时间部分硬编码为晚上8点?

Ric*_*iwi 31

DECLARE @start_date DATETIME
DECLARE @end_date DATETIME

SET @start_date = DATEADD(hour, 20, DATEDIFF(DAY, 2, GETDATE()))
SET @end_date = @start_date + 1

select @start_date, @end_date
Run Code Online (Sandbox Code Playgroud)


Wil*_*ler 6

这也有效:

DECLARE @start_date datetime
DECLARE @end_date datetime

SET @start_date = LEFT(CONVERT(nvarchar, DATEADD(DAY, -2, GETDATE()), 120), 11) + N'20:00:00'
SET @end_date = @start_date + 1

select @start_date, @end_date
Run Code Online (Sandbox Code Playgroud)

虽然cyberkiwi的答案很聪明!=)