Below mentioned is the sample code under discussion:
DECLARE @FROMDATE AS DATETIME
DECLARE @TODATE AS DATETIME
DECLARE @DAYS AS VARCHAR(100)
SET @FROMDATE = CONVERT(DATETIME, '2017-09-03')
SET @TODATE = CONVERT(DATETIME, '2017-09-06')
SET @DAYS = '''SUNDAY'',''MONDAY'',''TUESDAY'',''WEDNESDAY'',''FRIDAY'',''SATURDAY'''
PRINT @DAYS
--(O/P - 'SUNDAY','MONDAY','TUESDAY','WEDNESDAY','FRIDAY','SATURDAY')
SELECT
UPPER(DATENAME(dw, CONVERT(DATETIME, CONVERT(VARCHAR(10), APPDATE, 112)))),
*
FROM
SQLTABLE
WHERE
UPPER(DATENAME(dw, CONVERT(DATETIME, CONVERT(VARCHAR(10), APPDATE, 112)))) IN (@DAYS)
If I pass values manually as below I get output:
UPPER(DATENAME(dw, CONVERT(DATETIME, CONVERT(VARCHAR(10), APPDATE, 112))))
IN ('SUNDAY','MONDAY','TUESDAY','WEDNESDAY','FRIDAY','SATURDAY')
If I pass values using variable having the same values as shown in the O/P of PRINT @DAYS
the result is blank:
UPPER(DATENAME(dw, CONVERT(DATETIME, CONVERT(VARCHAR(10), APPDATE, 112))))
IN (@DAYS)
Assuming that in actual scenario I am generating the values under @DAYS
variable dynamically or passing it through code to the query / stored procedure below is my question :
Is it not allowed in SQL or am I doing it wrongly?