我在一个枪支俱乐部工作,我们正在努力寻找在特定年份拍摄的目标总数。该表包含2000 - 2018年的总数,我正在尝试编写一个查询,该查询将查看拍摄日期的字符串,格式为2010-06-13 00:00:00.000我只关心这一年所以我创建了这个查询:
SELECT SUM(ShotAt) AS TotalTargets
FROM MemberShootsC
WHERE GunClubNumber = 210015 AND ShootDate LIKE '2007-%%-%% 00:00:00.000'
如果我将查询运行到AND子句,它将起作用并返回总计。但是,如果我突出显示整个事情,我会得到一个空值。我也尝试过字符串的变体。比如这个' 2007%'这个' 2007- - %'
不确定我错过了什么。任何帮助表示赞赏。
答案 0 :(得分:3)
请勿转换为字符串以查询一年,请改用YEAR()
函数:
SELECT SUM(ShotAt) AS TotalTargets
FROM MemberShootsC
WHERE GunClubNumber = 210015 AND YEAR(ShootDate)=2007 -- MySQL
您还可以使用范围查询
SELECT SUM(ShotAt) AS TotalTargets
FROM MemberShootsC
WHERE GunClubNumber = 210015 AND ShootDate BETWEEN '2007-01-01' AND '2007-12-01 23:59:59.999'
注意:以上假设您不将日期存储为字符串。要使用的功能取决于RDBMS。在MS SQL Server中,您将使用DATEPART(year, ShootDate) = 2007