SQL按日期过滤返回0结果

时间:2015-01-29 21:05:03

标签: sql

CreatedDateTime是我尝试使用SQL

过滤的表
SELECT( * ) COUNT
FROM TABLE
WHERE CreatedDateTime like '2015''-''01''-''29%'

返回0条记录

即使我有两条记录具有以下

的CreatedDateTime
CreatedDateTime
2015-01-29 07:33:25.700
2015-01-29 02:01:54.713

但是以下工作

like '%' + CONVERT(VARCHAR(12), GETDATE(), 0) + '%'

我在这里做错了什么?

3 个答案:

答案 0 :(得分:2)

Datetime不是字符串,Wildcard %用于在字符串值中查找模式。

要获取特定日期的所有值,您可以简单地将其投射到日期,这将忽略时间部分并将带回该特定日期的所有记录。有点像......

SELECT COUNT(*)
FROM TABLE
WHERE CAST(CreatedDateTime AS DATE) = '20150129'  --<-- use ASNI YYYYMMDD

还始终坚持ANSI标准,将保护您免受环境特定问题的影响。

答案 1 :(得分:2)

假设它被存储为正确的日期时间,您可以删除时间部分并使用等价,因为通配符匹配用于字符串:

SELECT COUNT(*)
FROM TABLE
WHERE CAST(CreatedDateTime AS DATE) = '2015-01-29'

答案 2 :(得分:1)

试试这个..

SELECT( * ) COUNT
FROM TABLE
WHERE  (DATEPART(yy, CreatedDateTime) = 2015
AND    DATEPART(mm, CreatedDateTime) = 01
AND    DATEPART(dd, CreatedDateTime) = 29)