2014-02-25 4 views
4

SQL Server 2008 쿼리 결과가 텍스트 파일에 저장되어 있고이를 Access 데이터베이스 (Access 2007-2010)에 연결하려고합니다.csv/txt에서 datetime 필드를 Access로 가져 오기

텍스트 파일이 두 날짜과 같이 SQL 서버의 열 2008 datetime 형식이 포함되어 가져 오기 마법사에서

EFFECTIVE START DATE: 
--------------------- 
2013-07-01 00:00:00.000 

EFFECTIVE END DATE: 
------------------- 
2014-06-30 00:00:00.000 

을, 나는 고급을 클릭 한 다음 변경 :

  • 코드 페이지 = 유니 코드 (UTF-8) 대신 서유럽 어 (창)
열의 경우 :,
  • 데이터 유형 = 날짜/시간
  • 날짜 순서 = YMT
  • 날짜 구분 기호 = - 날짜 =에
  • 선행 제로는

을 쳤다 동안 여전히 가져 오기 마법사의 데이터 외모 하지만 가져 오기가 완료되고 Access에서 테이블을 열 자마자 # 아니요! 두 날짜 열에.

가져 오기 마법사에서 설정 조합을 시도했지만 (유니 코드로 코드 페이지를 남겨두고 날짜 순서를 변경하지 않고 날짜의 앞자리 0을 지우지 않음) 결국 날짜를 가져와야했습니다. 텍스트를 사용하면 계산을 중단 할 수 있습니다. 결국 도움

+0

새 테이블로 가져 오거나 기존 테이블에 추가합니까? 코드 페이지 값을 변경해야하는 이유는 무엇입니까? –

+0

기존 테이블에 추가하는 대신 새 테이블로 가져 오는 중입니다. 코드 페이지를 변경하지 않고 기본 유니 코드 (UTF-8)로 남겨 두었을 때도 문제가되지 않도록 datetime 열을 성공적으로 가져올 수 없습니다. 고마워, 정말 도움을 주셔서 감사합니다, 그것은 stackoverflow에 내 첫 질문이다 – user3249299

답변

1

난 그냥 대답으로이 추가 해요 : 당신이 SQL 서버의 출력을 제어 할 수있는 경우

, 당신의 날짜 필드의 형식을 변경할 수 있습니다 당신의 보기/저장 프로 시저 예 :

SELECT CONVERT(VARCHAR(10), [Field1], 101) AS Date1 

시간이 걸리므로 Access에서 인식해야합니다.

2

에 미리

많은 감사는 지금 어떤 계산을 수행에서 저를 정지 텍스트로 날짜를 가져올 수 있었다.

사실, 당신은 진정한 날짜로 텍스트 필드를 조작 할 수는 없지만과 같이 실제 Date/Time 값으로 변환하는 테이블 만들기 쿼리를 실행할 수 있습니다

SELECT 
    ID, 
    CDate(Left([Field1],InStr([Field1],".")-1)) AS Date1, 
    CDate(Left([Field2],InStr([Field1],".")-1)) AS Date2 
INTO SqlDataWithRealDates 
FROM SqlData; 

의 문제를 원래 가져 오기는 Date/Time 값이 초를 지원하지 않기 때문에 Access에서는 00:00:00.000이 포함 된 값을 인식하지 못합니다. 위의 쿼리는 문자열을 CDate()으로 전달하기 전에 후행 .000을 제거합니다.

아래 주석에서 Johnny Bones가 제안한 또 다른 방법은 CONVERT(VARCHAR(10), [Field1], 101) AS Date1과 같은 것을 사용하도록 SQL Server 쿼리를 변경하여 최종적으로 가져올 문자열에서 시간 구성 요소를 제거하는 것입니다. 이 일을 한 었죠 이후

+0

감사합니다 Gord. 당신은 다른 방법이 없다는 것을 말하고 나는 그것을 자료 유형 = 원본 란으로 첫째로 수입하고 그 후에 그것을 현재까지 재 변환해야 하는가? – user3249299

+1

@ user3249299 실질적으로 그렇게하는 것이 유일한 방법입니다. '날짜/시간'값은 분 초를 지원하지 않으므로 '00 : 00 : 00.000'이 포함 된 값은 인식되지 않습니다. –

+0

글쎄, 당신의 레이아웃이 바뀌지 않는다면 Import 템플릿을 사용하는 매크로를 실행하는 큰 번거 로움이 아니며 Gord가 말한 것처럼 2 개의 컬럼을 수정 한 Make Table을 실행 한 다음 원래 가져온 테이블을 삭제합니다. –

0

"M/d/yyyy HH : mm : ss"를 날짜 형식 (.NET)으로 사용하면 Access가 날짜를 올바르게 가져옵니다. 적어도 미국에 거주하는 경우에는 날짜/시간을 올바르게 가져옵니다. 시간은 24 시간입니다. AM/PM 표시기로 12 시간 동안 작동하지 않습니다. 이는 12 시간짜리 Excel에서 작동하는 것과 다릅니다. 밀리 초를 포함하면 작동하지 않습니다. 필요하지 않으면 시간을 벗어날 수 있습니다.

0

출력이 CSV 파일 인 경우 출력 형식을 "MM/DD/YYYY"로 변경하고 날짜에서 시간을 삭제하십시오. 괜찮습니다. 시간을 사용해야 할 경우 다른 열을 만들고 시간 만 남겨둔 날짜를 제거하십시오. 두 곳에서 수백 시간을 사용할 수있었습니다.

0

액세스가 데이터의 날짜 및 시간 정보를 올바르게 가져옵니다. 시간 정보를 삭제 (또는 제거) 할 필요가 없습니다. 나는 초 단위로 테스트하지 않았다. 그러나 데이터 열에 중복이있는 경우 수정해야하며 날짜 형식 (YMD, DMY 등)을 올바르게 설정해야합니다. 다음은 올바르게 가져온 텍스트 파일에 대한 최근 링크입니다. http://hodentekmsss.blogspot.com/2017/02/importing-text-file-into-ms-access.html

관련 문제