在SQL Server 2005中无需时间选择日期值

时间:2011-09-29 19:01:15

标签: sql-server sql-server-2005 datetime

我在SQL Server 2005中选择日期时遇到问题。表名是Softskill,列名是insertdate。数据以此格式存储为2011-09-22 08:50:28.000。

要选择,我将前端的值传递为“2011-09-22”,我的意思是仅限日期。

我尝试使用

SELECT INSERTDATE FROM SOFTSKILL WHERE INSERTDATE = '2011-09-22'.

但它没有显示记录。我可以知道该列所遵循的格式,是否有任何方法只使用日期来检索数据?

3 个答案:

答案 0 :(得分:3)

您想要搜索包含当天的一系列时间。类似的东西:

SELECT INSERTDATE 
    FROM SOFTSKILL 
    WHERE INSERTDATE >= '2011-09-22 00:00:00'
        AND INSERTDATE < '2011-09-23 00:00:00'

您还可以将功能应用于INSERTDATE以仅提取日期部分,但这将使查询nonsargable

答案 1 :(得分:3)

SELECT * 
FROM SOFTSKILL 
WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, InsertDate)) = '2011-09-22'

答案 2 :(得分:0)

这将满足您的需求

SELECT INSERTDATE 
FROM SOFTSKILL 
WHERE CAST(FLOOR(CAST(INSERTDATE AS FLOAT)) AS DATETIME) = '2011-09-30'

您需要截断INSERTDATE,使其时间部分为00:00:00.000;假设INSERTDATE为'2011-09-30 XX:XX:XX.xxx',它将等于'2011-09-30'。