문자열을 날짜열로 변경<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕하세요 여러분,
"dmy" 형식의 날짜와 문자 유형의 열이 있는 테이블이 있다고 가정합니다. 주어진 예:
| 캐릭터 날짜 |
|---|
| 2015년 8월 5일 |
| 2016년 3월 17일 |
| 2016년 5월 12일 |
이제 문자 날짜를 숫자 날짜로 변환하고 싶습니다. 나는 이것이 읽을 내용이 많은 일반적인 문제라는 것을 알고 있습니다. 그러나 내가 얻지 못하는 것은 다음과 같습니다.
열을 마우스 오른쪽 버튼으로 클릭하고 열 정보로 이동하여 데이터 유형을 숫자로 변경한 다음 형식으로 "dmy"를 선택하면 모든 것이 정상입니다. 모든 날짜가 올바르게 변환되었습니다. 하지만 다음 스크립트를 실행하면:
Column("문자 날짜") << 데이터 유형(숫자) << Informat("dmy") << Format("dmy");
또는
Column("문자 날짜") << 데이터 유형(숫자) << Format("dmy");
첫 번째와 세 번째 행만 올바르게 변환됩니다. 예제 열의 두 번째 행은 나중에 null입니다. 아마도 형식이 "mdy"로 잘못 해석되었기 때문일 것입니다.
이러한 접근 방식(스크립트/수동)이 어떻게 다른 결과를 가져올 수 있습니까? 그리고 스크립트 접근 방식이 작동하도록 하려면 어떻게 해야 합니까?
감사합니다!
Re: 문자열을 날짜열로 변경합니다.JMP는 informat에서 항상 mdy 형식을 사용하지는 않습니다.
첫 번째 행의 첫 번째 날짜가 나머지 행의 내용에 관계없이 mdy에 맞는 경우 mdy 형식을 사용합니다.
첫 번째 행이 dmy 형식에만 맞을 수 있는 경우 해당 형식이 대신 사용됩니다. 따라서 테스트할 때 가져온 행이 mdy 형식에 맞을 때까지는 모든 것이 괜찮아 보일 수 있습니다. 미국에서는 모든 날짜가 mdy에 있으므로 이는 문제가 되지 않습니다.
JMP 15.1.0에서는 여전히 그렇습니다. .csv 및 Excel 가져오기에서 약간의 개선이 있었지만 JMP에서 가져온 날짜를 사용하는 것이 여전히 고통스럽기 때문에 이 문제가 언젠가 해결되기를 바랍니다.
Re: 문자열을 날짜열로 변경합니다.고마워요 MS. "로캘 날짜"가 작업을 수행했습니다. 그러나 여전히 For Each 루프가 있습니다. 하지만 다른 해결책을 찾기 위해 비용을 지불하겠습니다.
그러는 동안 우리는 MS SQL 데이터베이스의 숫자 날짜를 JMP로 전송하려면 적절한 ODBC 드라이버를 설치하는 것이 중요하다는 사실을 알아냈습니다. "SQL Server" 드라이버에서는 숫자 날짜를 가져올 수 없었지만 "SQL Server용 ODBC 드라이버 11"에서는 가능했습니다.
Re: 문자열을 날짜열로 변경합니다.아주 아주 좋은
Re: 문자열을 날짜열로 변경합니다.당신은 로케일 날짜 체재.
Column("문자 날짜") << 데이터 유형(숫자) << Format("로캘 날짜");
Re: 문자열을 날짜열로 변경합니다.답변을 보내주신 Nelson에게 감사드립니다. 스크립트를 실행하고 "문자 날짜" 열에 타임스탬프를 얻었습니다. 그런데 JMP가 Format 명령을 무시하는 이유를 이해할 수 없습니다. 내 시스템: 독일 Windows 7의 JMP 12.2.0(UTC+1, dmy).
현재 나는 For Each Row를 피하려고 노력하고 있습니다. 날짜가 있는 모든 문자 열을 숫자 날짜로 자동 변환하는 스크립트에 대한 루프입니다. 그런 해결책이 있지만 정말 느립니다. 그러므로 위의 질문입니다.
Re: 문자열을 날짜열로 변경합니다.변환을 올바르게 수행하는 데 JSL에 문제가 있는 것 같습니다.정보로 항상 "m/d/y"를 사용하는 것 같습니다.아래 스크립트는 변환을 수행합니다.
이름의 기본값은 여기에 있습니다. ( 1 ) ;
노력하다 ( 닫다 ( 데이터 테이블 ( "시험" ) , nosave ) ) ;
dt = 새 테이블 ( "시험" ,
행 추가( 삼 ) ,
새 열 ( "캐릭터 날짜" ,
성격 ,
"명사 같은" ,
값 설정( { "2015.05.08" , "2016.03.17" , "2016.05.12" } )
)
) ;
각 행에 대해 (
: 캐릭터 날짜 = 하위 문자열 ( : 캐릭터 날짜 , 4 , 2 ) || "." ||
하위 문자열 ( : 캐릭터 날짜 , 1 , 2 ) || "." || 하위 문자열 ( : 캐릭터 날짜 , 7 )
) ;
열 ( "캐릭터 날짜" ) << 데이터 형식 (숫자) << 체재 ( "일/월/년" ) ;