2011-09-29 2 views
0

SQL Server 2005에서 날짜를 선택하는 데 문제가 있습니다. 테이블 이름은 Softskill이고 열 이름은 insertdate입니다. 데이터는 2011-09-22 08 : 50 : 28.000 형식으로 저장됩니다.SQL Server 2005에서 시간이없는 날짜 값 선택

선택하려면 프런트 엔드의 값을 '2011-09-22'로 전달합니다. 이는 날짜 만 의미합니다.

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

을 사용하려고하지만 기록을 표시되지 않습니다. 열이 따르는 형식을 알 수 있고 날짜 만 사용하여 데이터를 검색 할 수있는 방법이 있습니까?

답변

3

오늘을 포괄하는 시간 범위를 검색하려고합니다. 같은 : 또한 INSERTDATE에 기능을 적용 할 수

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

는 날짜 부분을 추출 할 수 있지만, 쿼리 nonsargable를 만들 것입니다. 00 :

+0

안녕하세요 전 프런트 엔드에서 날짜 값을 전달하고 있으며 다음 날짜도 전달할 수 없습니다. –

+0

@NAVEENKUMAR : 이것은 간단한 샘플입니다. 다음 날짜를 계산할 수 있지, 그렇지? –

+1

+1 단어 nonsargable에 대한 –

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

이것은 당신이

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

당신은 그것의 시간 부분이 00 그래서 INSERTDATE을 절단해야 할 필요가 무엇을 할 것인가 00.000; INSERTDATE가 '2011-09-30 XX : XX : XX.xxx'라고 가정하면 '2011-09-30'과 같습니다.

+0

관련 질문에 대한 유용한 정보 datetime : http://stackoverflow.com/questions/923295/how-to-truncate-a-datetime-in-sql-server – daniloquio

관련 문제