Set time portion of a datetime variable

datetime, sql, sql-server, t-sql

Solution

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

Problem

I am working on a query that will be an automated job. It needs to find all the transactions between 8 PM and 8 PM for the last day. I was thinking of doing something like this ``` DECLARE @start_date DATETIME DECLARE @end_date DATETIME SET @start_date = DATEADD(DAY, -2, GETDATE()) SET @end_date = DATEADD(DAY, -1, GETDATE()) ``` For an automated query this works good at figuring out the date portion. But the TIME portion of the variable is the current time that the query executes. Is there a quick simple way to hard code the time portion of both variables to be 8:00 PM?

Original source