0

我正在尝试使用 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

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

4

3 回答 3

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

于 2013-01-08T09:44:42.173 回答
1
SELECT * 
FROM Table 
WHERE CAST(subdate AS DATE)='2012-12-12'

拉吉

于 2013-01-08T09:39:57.800 回答
1

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

您必须使用: Sql Server 日期格式

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

演示SQLFiddle

于 2013-01-08T09:41:29.230 回答