这是我的疑问:
SELECT * FROM CSEReduxDepts, CSEReduxResponses
WHERE CSEReduxDepts.csedept_id = CSEReduxResponses.employeedept
AND CSEReduxResponses.status = 1
AND CSEReduxResponses.execoffice_status = 1
AND MONTH([CSEReduxResponses.approveddate]) = MONTH(GETDATE())
ORDER BY approveddate
如果我拿出AND MONTH([CSEReduxResponses.approveddate]) = MONTH(GETDATE())
它会工作,但我想从本月获得数据。我怎样才能让它发挥作用?
答案 0 :(得分:2)
试试这个:
select *
from CSEReduxDepts d
inner join CSEReduxResponses r on r.employeedept = d.csdept
where r.status = 1
and r.execoffice_status = 1
and MONTH(r.approveddate) = MONTH(GETDATE())
order by r.approveddate asc
在TSQL查询/语句中使用方括号只允许使用保留字或其他特殊字符,如下所示:
select r.[Approved Date]
您可能会看到列名使用空格,因此适当使用方括号。或者,就像法语一样:
select r.[Date Approuvé]
在方括号之外确实不会接受。
以下是关键字的示例:
select r.[month]
告诉TSQL将单词month
解释为列名,而不是TSQL MONTH()
函数。
答案 1 :(得分:2)
括号表示范围,如表格或列。通过在两者之间放置括号,您告诉sql server它的一个元素。
这样可行:
[CSEReduxResponses].[approveddate]
但你可能只是删除它们。
此外,正如评论中所述,使用SQL92语法会更好。
SELECT *
FROM CSEReduxDepts d
inner join CSEReduxResponses r on d.csedept_id = r.employeedept
and r.status = 1
and r.execoffice_status = 1
Where
MONTH(r.approveddate) = MONTH(GETDATE())
ORDER BY approveddate