I have a table A with origdt as a column in it. I want to pull all the records from the table based on the following conditions
if today is tuesday then Origtdt between saturdaymorning to yesterday evening else Origtdt between yesterday morning to yesterday evening end
Here is the query i wrote and it is giving me an error.
SELECT *
FROM A
WHERE
CASE
WHEN DATENAME(dw, GETDATE()) = 'Tuesday'
THEN
(
OrigDt BETWEEN
CONVERT(SMALLDATETIME, CONVERT(VARCHAR(10), GETDATE() - 3, 101))
AND DATEADD(SS, -1, CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 101)))
)
ELSE
(
OrigDt BETWEEN
CONVERT(SMALLDATETIME, CONVERT(VARCHAR(10), GETDATE() - 1, 101))
AND DATEADD(SS, -1, CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 101)))
)
END
Error is : incorrect syntax near Between
DATEPART(dw, GETDATE()) = 3in place ofDATENAME(dw, GETDATE()) = 'Tuesday'; that's also a very minor performance optimisation. Admittedly it's then less obvious which day you're referring to.