我的数据库中有一个列,它将日期存储为日期/时间。我有一个SQL查询来选择日期与查询中的日期匹配的所有记录。但它没有返回任何数据。
select Name,Dateadded from table
这会返回
之类的结果Bob Smith 2009-12-11 09:35:53.000
我将查询更改为以下内容,但未返回任何结果。
select Name,Dateadded from table where dateadded = '2009-12-11'
我尝试转换到日期但仍然没有运气,我必须输入查询之间的日期以使其正常工作
SELECT
Name, convert(varchar(10), Dateadded , 103)
FROM
table
谁能告诉我哪里出错了?我尝试过使用'喜欢',如果我'在'两个日期范围之间'工作,它仍然不起作用
答案 0 :(得分:3)
使用转换:
WHERE convert(date,Dateadded) = '2014-07-24'
或者可能是
WHERE Dateadded >= '2014-07-24' AND Dateadded < '2014-07-25'
WHERE Dateadded >= '2014-07-24' AND Dateadded < DATEADD(dd, 1, '2014-07-24')
你也可以做那样的事情
WHERE DAY(Dateadded) = 24 AND MONTH(Dateadded) = 07 AND YEAR(Dateadded) = 2014
答案 1 :(得分:2)
在mask2
子句中将datetime
转换为date
:
where
答案 2 :(得分:1)
与其他答案一样投射到date
会有效。为了提高性能,可能更好(取决于索引):
select Name,Dateadded
from [table]
where dateadded >= '2009-12-11'
and dateadded < '2009-12-12'
答案 3 :(得分:0)
仅在您预期完全匹配时才使用=
。在您的情况下,您可以使用:
select Name,Dateadded from table where dateadded like '2009-12-11%'
答案 4 :(得分:0)
你可以尝试
try
因为你只想匹配日期。
注意:看到评论后,看来你正在使用sql server 2012,上面的工作在mysql中不确定sql server 2012
答案 5 :(得分:0)
以下代码可以使用:
SELECT Name,Dateadded FROM table WHERE Dateadded LIKE '2009-12-11%'
或
SELECT Name,Dateadded FROM table WHERE Dateadded >= '2009-12-11 00:00:00' AND Dateadded <= '2009-12-11 23:59:59'
或
SELECT Name,Dateadded FROM table WHERE Dateadded BETWEEN '2009-12-11 00:00:00' AND '2009-12-11 23:59:59'