【发布时间】:2018-12-03 20:52:11
【问题描述】:
SELECT SubmitDate, Type, Location, CONVERT(DATETIME, SubmitDate, 101) AS DDate
FROM Employee
WHERE (Type IN ('C', 'Q'))
AND (DDate > DATEADD(DDate, - 1, GETDATE()))
我需要获取过去一年的所有记录,SubmitDate 是 varchar。我使用CONVERT 将列转换为datetime。但是我收到以下错误:
DDate 无法识别的 dateadd 选项。
我尝试将CONVERT 切换为以下内容,但没有成功:
CONVERT(DATE, SubmitDate, 101)
【问题讨论】:
-
同级查询的 where 子句中不能访问别名/计算列
-
Dateadd 希望您告诉它
what您正在添加为第一个参数,例如日、周(查看文档)。 -
您所说的“过去一年”到底是什么意思?您是指从 2018 年 1 月 1 日开始,还是什么?
-
转换可能不是您的问题,您的 dateadd 存在语法问题。参数应为
DATEADD(Day, -1, GETDATE())或您想要执行的任何时间间隔。 -
根据你想要的cmets
WHERE (Type IN ('C', 'Q')) A and CONVERT(datetime, SubmitDate, 101) > dateadd(year,-1,getdate())
标签: sql sql-server database tsql