2013-04-17 5 views
0

비교하기 전에 TIMESTAMPDATE으로 변환해야합니까? EX :오라클의 Datetime 비교

AND SORD.CREATED >= TO_DATE(FROM_TZ(CAST(TO_DATE('','DD-MON-YYYY HH24:MI:SS') AS TIMESTAMP), 'Asia/Kuala_Lumpur') AT TIME ZONE 'UTC','DD-MON-YYYY HH24:MI:SS') 
AND SORD.CREATED < TO_DATE(FROM_TZ(CAST(TO_DATE('','DD-MON-YYYY HH24:MI:SS') AS TIMESTAMP), 'Asia/Kuala_Lumpur') AT TIME ZONE 'UTC','DD-MON-YYYY HH24:MI:SS') 

저는 아직 새롭고 데이터베이스에 대해 배우고 있기 때문에 의견을 찾고 있습니다.

+3

어떤 DB를 사용하고 있습니까? –

+0

@MarcoForberg TO_DATE()는 oracle 또는 db2 함수이지만 from_tz()은 Oracle 만있는 것처럼 보입니다. 적절한 태그가 추가되었습니다. –

+0

@MarcoForberg oracle db –

답변

1

당신이 사용하고있는 데이터베이스를 정확하게 말하기는 어렵습니다. 제공 한 코드의 함수에서 오라클을 추측하고 있습니까? 확인해주세요.

일반적으로

, 나는 다음 당신에게 말할 수 :

  • 을 당신은 어떤 값을 전달하지 않습니다. TO_DATE의 첫 번째 매개 변수는 비어 있으며 날짜로 변환 할 문자열이 포함됩니다.

  • 데이터베이스의 값이 무엇인지 알아야합니다. SORD.CREATEDDATE 또는 TIMESTAMP 데이터 유형입니까? 그것은 UTC 값을 유지합니까? 그렇다면 쿼리를하기 전에 현지 시간을 UTC로 변환해야합니다. 가능한 경우 쿼리 자체 외부에서이 작업을 수행해야합니다. 데이터베이스의 값이 유형 TIMESTAMP WITH TIME ZONE의 경우 당신은 당신의 질문에 보였다처럼

  • 는, 당신은 AT TIME ZONE 기능 DATE 또는 TIMESTAMP를 사용할 수 있습니다.

  • 문자열을 불필요하게 캐스팅하지 마십시오. 소스 데이터가 이미 DATE 또는 TIMESTAMP 데이터 유형 인 경우 문자열로 변환 할 필요가 없습니다. 날짜가 날짜이면 날짜를 유지해야합니다. 문자열 형식을 도입하면 때때로 오류가 발생할 수 있습니다.

+0

으로 SQL Developer를 사용하고 있습니다. 예. 오라클 db를 사용하고 있습니다. 입력 내용이 비어 있다는 것을 알고 있습니다. 나는 특정 기간 동안 보고서를 생성하기 위해 코드의이 부분을 사용했다. 데이터베이스가 UTC를 사용하고 있지만 데이터 유형이 타임 스탬프 또는 datetime인지 확실하지 않습니다. 데이터 유형을 확인하는 방법이 있습니까? 오류/오프셋없이 타임 스탬프와 datetime을 비교할 수 있는지 알고 싶습니다. –

+0

저장하고있는 것만 알게됩니다. DB가 아닌 경우 테이블 정의를보고 일부 값을 확인하십시오. 또는 DB가 속한 사람과 이야기하십시오. –