我试图在SQL Server 2008中使用日期从表中选择所有值

时间:2013-01-08 09:37:28

标签: sql-server-2008

我正在尝试使用SQL Server 2008中的日期从表中选择所有值。问题是数据库中的date列是Datetime格式。但问题是我必须使用日期

从数据库中选择所有值

我使用了以下查询

select * 
from Table 
where subdate = '2012-12-12'.

它不会返回任何值....

我的表就像这样

Subdate                        val1    val2    val3 name
--------------                -----   -----   ----  -----
2012-12-12 12:32:12.000     2   1   2    ben
2012-12-27 15:17:32.533     2   1   2    yen
2012-12-27 15:20:06.660     2   1   2    sun

提前致谢.........

3 个答案:

答案 0 :(得分:2)

select * from Tble where subdate>='20121212' and subdate <'20121213'

将是我通常推荐的方法(*)。如果它是一个参数,那将是:

select * from Tble where subdate>=@Parm and subdate <DATEADD(day,1,@Parm)

'2012-12-12''2012/12/12'可能会遇到奇怪的转换问题,具体取决于您在服务器上的语言/日期设置。 '20121212'将始终转换为YYYYMMDD


(*)我没有使用BETWEEN进行此类比较,因为您要么包含两个中午,要么必须计算第二天午夜之前的最后一刻。如果您使用的是23:59:59.997,那么会在datetime,但会突然变为datetime2的其他内容。

答案 1 :(得分:1)

SELECT * 
FROM Table 
WHERE CAST(subdate AS DATE)='2012-12-12'

拉​​吉

答案 2 :(得分:1)

表格中的日期还包含Time,因此您必须将该日期转换为适合您输入日期的格式。

您必须使用:Sql Server Date Formats

select * from Tble where CONVERT(VARCHAR(10), subdate, 111) = '2012/12/12'

演示SQLFiddle