5

我有一个包含日期时间列的表,名为:

 TranDate

因此,我必须通过表查询以获取仅取决于年份的数据。所以,我对如何做到这一点有点困惑。我当前的sql查询是:

 select * from Angkasa_UnpostedRecords 
 where year(convert(datetime,TranDate,103) = year(convert(datetime,@FromDate,103)

但我在这方面遇到了错误。请建议我该怎么做。

谢谢你。

4

4 回答 4

12

语法错误是因为您没有正确关闭括号。您打开两个,但在相等运算符的每一侧只关闭一个

于 2013-08-19T08:03:40.320 回答
6

我想你可以只使用年份部分

select * from Angkasa_UnpostedRecords 
 where year(TranDate) = year(@FromDate)

如果 TranDate 和 @FromDate 不是日期时间字段,则

select * from Angkasa_UnpostedRecords 
 where year(convert(datetime,TranDate,103)) = year(convert(datetime,@FromDate,103))

带左括号和右括号。

于 2013-08-19T08:10:48.867 回答
4

您缺少括号:

 select * from Angkasa_UnpostedRecords 
 where year(convert(datetime,TranDate,103)) = year(convert(datetime,@FromDate,103))

year(注意每个函数末尾的额外括号

于 2013-08-19T08:03:32.320 回答
4

尝试这个

select * from Angkasa_UnpostedRecords
WHERE DATEDIFF(year, TranDate, @FromDate)=0
于 2013-08-19T08:05:57.307 回答