2011-11-07 3 views
2

날짜와 다른 데이터 사이에서 데이터를 선택하는 SQL을 작성했습니다. 2011-04-04 00 : 30 : 이런 19.107날짜와 시간 값을 Sql 서버가 전달 매개 변수로 변환

내 SQL을 은 기본적으로 문제는 내가

내 coloum 이름 date_tm 및 샘플 데이터 같은 일부 선택했으나으로 원하는 날짜 형식에 관한 것입니다 :

DECLARE @Date_From DATETIME; 
DECLARE @Date_To DATETIME; 

SET @Date_From = CONVERT(VARCHAR(10),DATEADD(d,DATEDIFF(d,0,GETDATE()),0)-1,120); 
SET @Date_To = CONVERT(VARCHAR(10),DATEADD(d,DATEDIFF(d,0,GETDATE()),0)-1,120); 

select distinct no, lot 
from database.dbo.TblName 
Where Convert(varchar(10), Date_Tm, 120) Between '@Date_From' And '@Date_To'; 

나는 내가 alreadly의 변환하지 오전이

Print(@Date_From); 
Print(@Date_To); 

출력이 "2011년 11월 6일 오전 12시"같은 것입니다 사용하여 디버깅하려고 ? 다음이 같은 select 문에서 테스트 :

출력은 여기 "2011년 11월 6일"왜 그 일 같은 것입니다?

선택 결과는 == "

그럼 내가이 일에 내가 date_from에서 구문 분석 직접하려고 형식과 DATE_TO

where Convert(varchar(10), Date_Tm, 120) Between '2011-04-04' And '2011-04-04' 

에 대한 테스트를 많이 할 아무것도 내가 예상되는 것을 얻을

어쨌든, 내가 원했던 것은 날짜의 범위에 따라 데이터를 얻는 것입니다.이 변환 방법으로 머리를 으 am니다. == "

프리 나를 도와 줘.

감사 :

PS : 내 실수를 음성 주저하지 말아 주시기 바랍니다. 우리 모두는 실수로 배운다. 그리고 나의 가난한 영어에 대해 유감스럽게 생각한다.

감사합니다 :

LiangCk

당신이 날짜 대신 VARCHAR (10)로 두 개의 변수를 선언이기 때문이다

답변

1

. 변수가 datetime이기 때문에 SQL은 자동으로 다시 datetime으로 변환합니다.

DECLARE @Date_From VARCHAR(10); 
DECLARE @Date_To VARCHAR(10); 
+0

& % *의 @ (%의 @) % @@ 내가 물어 바보 어떤 질문 ... 감사 Norlando 난 그냥 VARCHAR (10)로 날짜를 변경과 수정이 같은 : 선언 @Date_From VARCHAR (10); – Worgon

+0

@ LiangCk, 문제가되지 않고 항상 실수를 저질렀습니다. – norlando