【发布时间】:2020-10-22 20:52:27
【问题描述】:
为什么 SQL 返回错误:“无效的列名 'S_DATE'。”
SELECT [FITTER]
,[STARTDATE]
,[S_DATE] = LEFT([STARTDATE], 11)
FROM [DM_Fleetwave].[all_timesheets]
WHERE cast([S_DATE] as datetime) >= dateadd(mm, -1, getdate())
我需要进行日期转换,因为原始字段 (STARTDATE) 具有字符串格式。这就是我创建仅包含日期的新列的原因。
下面是没有强制转换条件的结果:
FITTER STARTDATE S_DATA
Mekker Sjelland 01/11/2019 00:00:00 01/11/2019
【问题讨论】:
-
标记适当的数据库名称。
-
您正在尝试转换 S_Date,但您的列是 S_Data。错字
-
您不能在
where子句中使用来自select子句的别名。另外,为什么将日期存储为字符串?将日期存储为日期。最后一件事,您的别名是S_Data,而您所指的where 子句是S_Date。 -
S_Data / S_date - 仅在这里拼写错误。我不是数据库管理员 - 只有只读访问权限。这就是我问的原因。