我在SQL Server 2005中选择日期时遇到问题。表名是Softskill,列名是insertdate。数据以此格式存储为2011-09-22 08:50:28.000。
要选择,我将前端的值传递为“2011-09-22”,我的意思是仅限日期。
我尝试使用
SELECT INSERTDATE FROM SOFTSKILL WHERE INSERTDATE = '2011-09-22'.
但它没有显示记录。我可以知道该列所遵循的格式,是否有任何方法只使用日期来检索数据?
答案 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'。