2013-02-07 1 views
0

내가 ... 사이베이스 ASE 15.5에 대한 답변을 다른 (아마도) 아주 쉬운 질문이 사이에서 데이터를 선택 나는 날짜 열이있는 임시 테이블이베이스는 - 2 날짜

:-(나의 화제.

2013-01-21 10:05:00.0 
2013-01-28 08:03:00.0 
,536,913 :

날짜

예에서 라이브 데이터

변환 임시 테이블을 이용하여 변환 삽입 내가 날짜 범위 필터를 사용하여 임시 테이블에 라이브 테이블에서 데이터를 선택하려고 할 때

21/01/2013 
28/01/2013 

using (CONVERT(VARCHAR(10), DATEFIELD, 103) 

에 내가 직면하고 문제는 :

WHERE (CONVERT(VARCHAR(10), DATEFIELD, 103) BETWEEN '21/01/13' AND '28/01/13') 

을 .... 때 이 sybase를 실행하면 28/01/2013이 아닌 21/01/2013 날짜 만 삽입됩니다. 내가 종료 날짜로 29/01/2013을 사용하여 또한 경우

..... 대신 즉

WHERE (CONVERT(VARCHAR(10), DATEFIELD, 103) BETWEEN '21/01/13' AND '29/01/13') 

나는 모두가 삽입 얻을 :

21/01/2013 
28/01/2013 

을 더 또한 - 난 단지 21를 실행하는 경우/01/13 ie

WHERE (CONVERT(VARCHAR(10), DATEFIELD, 103) BETWEEN '21/01/13' AND '21/01/13') 

아무 것도 반환되지 않습니다.

아이디어가 있으십니까?

아마도 sybase에서 BETWEEN을 사용하는 것은 좋지 않습니다. 단지 필드가 DATETIME에서 VARCHAR (10)로 변환된다는 것을 분명히하기 위해서입니다.

내가 가지고있는 또 다른 문제는이 첫 번째 부분 수정이있을 때 나는 예를 들어 와일드 카드를 전달할 수 있기를 원합니다.

WHERE (CONVERT(VARCHAR(10), DATEFIELD, 103) BETWEEN '%' AND '%') 

....하지만이 순간에도 작동하지 않습니다.

어떤 아이디어도이 두 가지 문제 중 하나에 있습니다. 사전에

감사합니다.

가레스

답변

1

그럼 varchar로 변환 할 필요가 없습니다. 귀하의 필드가 datetime이라고 가정합니다.

convert(date, DATEFIELD, 103) 

그리고 당신이 수 후

: (TST의 cenario)

create table #temp1 (Datatst datetime) 
insert into #temp1 values('2013-01-21 10:05:00.0') 
insert into #temp1 values('2013-01-28 08:03:00.0') 

select Datatst from #temp1 
where convert(date,Datatst,103) between '21/Jan/13' AND '28/Jan/13' 

Datatst이

2013-01-21 10:05:00.0 
2013-01-28 08:03:00.0 

(내 캐릭터가 CP850됩니다)