2012-04-25 5 views
0

인도네시아어 파일에서 가져온 일부 데이터를 가져와야합니다. 그 중 일부는 '01OKT2011'형식의 날짜입니다. T-SQL datetime (예 : 10-01-2011 00:00:00)으로 자동 변환 할 수 있어야합니다.인도네시아어 문자열에서 날짜 시간 값을 얻는 방법

제가 생각할 수있는 가장 간단한 방법은 외부 짧은 이름과 월 번호에 대한 열이있는 조회 테이블을 만드는 것입니다.하지만이 방법은 유일한 소스 파일 인 현재 10 월과 11 월에 대해서만 다루고 있습니다. 다른 달들이 어떻게 단축 될지 나는 완전히 확신하지 못합니다.

더 간단한 방법이 있나요? SQL Server의 기본 제공 언어 중 하나에 같은 달의 짧은 이름이 사용됩니까?

답변

0

syslanguages 테이블을보고 SQL Server 설치가 인도네시아어를 지원하는지 확인하십시오.

SQL Server가 인도네시아어를 지원한다고 가정하면 언어를 설정하십시오. 또한 SET DATEFORMAT ymd. 그런 다음 datetimes를 직접 사용하십시오.

인도네시아어가 지원되지 않거나 설치되지 않은 경우 데이터베이스 외부에서 현지화를 해결해야합니다. 데이터베이스 서버가 귀하의 월 이름을 알고 싶어하더라도 실제로 추천합니다.하지만 그 조언을 저장하고 있습니다. 아주 다른 질문에 대해).

실제 데이터가 아니라면 다음과 같은 방법으로 데이터를 변환 할 수 있습니다.

DATETIMEFROMPARTS(
    SUBSTRING(x, 6, 4), 
    REPLACE(...(REPLACE(SUBSTRING(x, 3, 3), 'JAN', 'Jan')...,'OKT', 'Oct'),...,'DEC', 'Dec')...), 
    SUBSTRING(x, 1, 2) 
) 
+0

인도네시아어는 지원되지 않습니다. 나는 이미 그것을 확인 했어야했다. – Jaloopa

+0

또한 내 통제 범위를 벗어난 이유 때문에 필자가 제공 한 데이터로 작업해야하며 데이터베이스 내에 있어야합니다. 나는 가독성을 위해 긴 문자열 대신에 CASE와 STUFF로 갈 예정 이었지만, 이것이 내가 사용해야 할 논리처럼 보입니다. 최악의 시나리오 인 것을 확인했지만 적어도 더 똑똑한 솔루션을 찾는 데 더 이상 시간을 낭비 할 필요가 없습니다. – Jaloopa

+0

@Jaloopa - 예, 나쁜 소식은 죄송합니다. 이전 버전의 SQL Server는 "언어 정의"를 지원했지만 오래 가지 못했습니다. 나는 CASE + STUFF가 REPLACE보다 훨씬 좋아 보이 리라는 것에 동의한다. 이러한 변환을 데이터베이스의 여러 위치에서 절대적으로 수행해야하는 경우 사용자 함수를 느리게 정의하고 유지 관리 할 수 ​​있습니다. –

관련 문제