我有以下代码从Checkin_day
创建CHECKIN_DATE_TIME
变量。我只想从新创建的Checkin_day
变量中选择'Sundays',但是我收到了无效的列名错误(因为它不是数据集中的变量)。我可以在代码中添加些什么,以便仅选择落在“星期日”的记录?这是一个声明问题,还是我需要子查询?
use EMTCQIData
DECLARE @StartDate Date
DECLARE @EndDate Date
Set @StartDate = '01/01/2018'
Set @EndDate = '12/31/2018'
SELECT *,
Format([CHECKIN_DATE_TIME],'dddd') AS [Checkin_Day]
FROM ED_TAT_MASTER
WHERE (CHECKIN_DATE_TIME > @StartDate and CHECKIN_DATE_TIME < @EndDate) AND
Checkin_Day = '*Sunday*'
答案 0 :(得分:2)
尝试查询实际列,而不是别名。
DECLARE @StartDate Date
DECLARE @EndDate Date
Set @StartDate = '01/01/2018'
Set @EndDate = '12/31/2018'
SELECT *,
FORMAT([CHECKIN_DATE_TIME], 'dddd') AS [Checkin_Day]
FROM
ED_TAT_MASTER
WHERE
(CHECKIN_DATE_TIME > @StartDate and CHECKIN_DATE_TIME < @EndDate)
AND FORMAT([CHECKIN_DATE_TIME], 'dddd') = 'Sunday' -- <- here
您还可以使用DATEPART(dw, [CHECKIN_DATE_TIME]) = 0
之类的DATEPART进行查询
https://www.w3schools.com/sql/func_sqlserver_datepart.asp
答案 1 :(得分:0)
在您的WHERE子句中添加一个AND,以仅获取星期天的记录。