使用带有日期字符串的LIKE子句进行查询

时间:2018-01-09 14:43:46

标签: mysql sql sql-server

我在一个枪支俱乐部工作,我们正在努力寻找在特定年份拍摄的目标总数。该表包含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- - %'

不确定我错过了什么。任何帮助表示赞赏。

1 个答案:

答案 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