sql数据不会根据日期返回

时间:2018-01-19 10:23:24

标签: sql datetime sql-server-2012

我的数据库中有一个列,它将日期存储为日期/时间。我有一个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
谁能告诉我哪里出错了?我尝试过使用'喜欢',如果我'在'两个日期范围之间'工作

,它仍然不起作用

6 个答案:

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