Разбейте @givenDateTime
до компонента даты и компонента времени и используйте AND
для построения предложения WHERE
:
DECLARE @givenDate DATETIME
SELECT @givenDate = DATEADD(dd, 0, DATEDIFF(dd, 0, @givenDateTime))
DECLARE @givenTime DATETIME
SELECT @givenTime = CONVERT(varchar(2),
CASE
WHEN DATEPART([hour], @givenDateTime) > 12 THEN CONVERT(varchar(2), (DATEPART([hour], @givenDateTime) - 12))
WHEN DATEPART([hour], @givenDateTime) = 0 THEN '12'
ELSE CONVERT(varchar(2), DATEPART([hour], @givenDateTime))
END
) + ':' +
CONVERT(char(2), SUBSTRING(CONVERT(char(5), @givenDateTime, 108), 4, 2)) + ' ' +
CONVERT(varchar(2),
CASE
WHEN DATEPART([hour], @givenDateTime) > 12 THEN 'PM'
ELSE 'AM'
END
)
SELECT * FROM myTable
WHERE tableDate <= @givenDate AND tableTime <= @givenTime
Дата конвертации взята из здесь .
Преобразование времени взято с здесь .
Обратите внимание, что у @givenTime
будет дата 01 Jan 1900
(плюс время), поэтому убедитесь, что в предложении where это учитывается.