2009-06-25 5 views
1

우선, 나는 역설적 인 초보자입니다.
둘째, 제 3 자 소프트웨어 패키지의 데이터베이스를 쿼리하고있어 스키마를 변경할 수 없습니다.역설 : 날짜 열 + 날짜 열로 시간 열

나는 "Date"와 "Time"이라는 두 개의 필드를 가지고 있는데, 이는 필자의 MS SQL 환경에서 DateTime으로 쿼리하고 싶다.

이것이 가능합니까?

몇 가지 쿼리를 시도했으며 명령이 유효하면 "조건 식에 데이터 형식이 일치하지 않습니다."라는 메시지가 나타납니다.

또한 Paradox 데이터베이스에서 약 1999-2000의 차이가 있는지 확인합니다.

편집 : 코드에서 처리 할 수 ​​있기 때문에 필드의 간단한 문자열 연결조차 큰 도움이됩니다.

편집 : a.i.breveleri의 대답에 응답. CAST ([1 - CAST '쿼리 식에 ( 운영자 누락) (TIMESTAMP AS m.DateComplete)

ERROR [42000] [마이크로 소프트] [ODBC 역설 드라이버] 구문 오류 :이 메시지가/1/3000] AS TIMESTAMP) + CAST (m.TimeComplete AS TIMESTAMP) '입니다.

나는이 쿼리를 실행하면 : 당신에게 연결된 문자열을 제공

select distinct 
    CAST(m.DateComplete AS TIMESTAMP) - 
    CAST("1/1/3000" AS TIMESTAMP) + 
    CAST(m.TimeComplete AS TIMESTAMP) 
from Mean m 
+0

QBE 쿼리 또는 SQL 쿼리를 작성하고 있습니까? "날짜"및 "시간"열의 역설 데이터 형식은 무엇입니까? -Al –

+0

SQL 쿼리. 데이터 형식에 대한 가장 좋은 추측은 "날짜"가 날짜 열이고 "시간"이 문자열입니다. –

+1

너무 밀도가 높아져서 미안하지만 Windows 용 Paradox를 사용하여 데이터에 액세스하고 있습니까? 그렇지 않다면 어떻게 Paradox 데이터베이스에 연결하고 있습니까? 다른 SO 주제는 이와 같은 쿼리가 ODBC 드라이버 선택에 민감 할 수 있음을 나타냅니다. - 알. –

답변

1
SELECT CAST(f.DateColumn AS VARCHAR(20)) + ' ' + CAST(f.TimeColumn AS VARCHAR(20)) 
FROM Foo f 

합니다.

SELECT CAST(CAST(f.DateColumn AS VARCHAR(20)) + ' ' + CAST(f.TimeColumn AS VARCHAR(20)) AS TIMESTAMP) As FooTime 
FROM Foo f 

은 결합 된 시간을 제공합니다.

+0

"..., cast (Date as varchar (20) as ...)"를 실행하면 "누락 된 연산자"오류가 발생합니다. –

+0

날짜는 예약어이므로 큰 따옴표를 사용하고 싶을 수도 있습니다. –

1

QBE 조회 :

Query 
ANSWER: :PRIV:ANSWER.DB 

test.db | Date | Time       | 
     | _x | _y, calc _x+_y as "DateTime" | 

EndQuery 

SQL 쿼리 :

SELECT DISTINCT 
    CAST(D0."Date" AS TIMESTAMP) - 
    CAST("1/1/3000" AS TIMESTAMP) + 
    CAST(D0."Time" AS TIMESTAMP) 
FROM 
    "test.db" D0 

-Al.

+0

MS ODBC 드라이버에서 SQL 쿼리를 사용할 때 구문 오류가 발생합니다. 내 질문을 업데이트했습니다. –

+0

Microsoft ODBC Desktop Database Driver (아마 ODBCJT32.DLL)가 "1/1/3000"을 [1/1/3000]으로 변경하는 것처럼 보입니다. 작은 따옴표 '1/1/3000'을 사용해보십시오. 또는 대체 드라이버에 대한 DataDirect Technologies (이전의 Merant, INTERSOLV ODBC 드라이버 제조업체)를 확인할 수 있습니다. - 알. –