我正在尝试使用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
提前致谢.........
答案 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'