JMP 에서 처리해야 할 네 가지 일반적인 시간 기반 값, 즉 날짜, 시간, 날짜/시간, 기간이 있습니다. 데이터베이스나 플랫파일에서 데이터를 가져오든, JSL에서 참조하든, JMP의 축에서 사용하든, JMP가 이러한 값을 저장하는 방식과 사용 시의 의미를 이해하는 것이 중요합니다.
날짜/시간 값
Datetime 값은 특정 날짜의 특정 시간을 나타냅니다. 예:
- 2016년 1월 20일 오후 12시
- 1918년 11월 7일 오후 3시
- 1969년 7월 20일 20시 17 분
대부분의 분석 애플리케이션과 마찬가지로, JMP에서는 날짜/시간 값이 기준 시간 이후의 시간 단위로 저장됩니다. JMP에서 기준 시간은 1904년 1월 1일 오전 12시이고, 단위는 초입니다. 더 쉽게 설명하자면, JMP는 1904년 1월 1일 자정 이후의 초 수로 날짜를 저장합니다.
따라서 위의 예에서 datetime 값에 해당하는 숫자 값은 다음과 같습니다.
| 날짜/시간 |
JMP 날짜/시간 값 (1904년 1월 1일 자정 이후 초) |
| 2018년 1월 20일 오후 12시 |
3536136000 |
| 1918년 11월 7일 오후 3시 |
468687600 |
| 1969년 7월 20일20:17 |
2068661820 |
날짜
JMP에서 날짜 값은 시간을 오전 12시로 가정하는 날짜시간형의 특수한 경우일 뿐입니다. 즉, 1904년 1월 1일 자정부터 저장되는 날짜의 자정까지의 초 수를 계산합니다.
타임스
시간 값은 특정 날짜가 없는 시간을 나타냅니다. JMP는 자정을 기준으로 초 단위로 시간 값을 저장합니다. 따라서 오전 12시 1분 1초는 61입니다. 자정 이후 61초가 지났습니다.
기간
지속 시간은 특정 시간 단위의 양을 나타내는 숫자라는 점을 제외하면 그다지 특별한 것은 아닙니다. 당연히 JMP는 지속 시간이 초 단위로 표현될 때 가장 잘 처리합니다. 시간 기반 값의 표시 형식 지정에 대해서는 시간 기반 값 표시 형식 지정에서 더 자세히 설명하겠습니다.
표시를 위한 시간 기반 값 포맷
시간 기반 값을 초 단위로 표시하는 것은 그다지 유용하지 않으므로 JMP에는 이러한 값을 표시하기 위한 다양한 날짜 형식 과 시간 형식이 있습니다.
하지만 날짜 표시 방식을 변경해도 기본 값이나 분석 방식은 변경되지 않습니다. 예를 들어, 형식을 "m/y"(즉, 월/년)로 변경하더라도 JMP에서 데이터를 분석하거나 그래프로 표시할 때 월별로 요약하도록 강제하지는 않습니다. 월별로 요약하려면 요약할 고유 값이 포함된 새 열을 만들어야 합니다. 새 열을 만들려면 헤더를 마우스 오른쪽 버튼으로 클릭하고 새 수식 열을 선택하여 열을 변환합니다 .
시간 기반 값 가져오기
데이터를 가져올 때 시간 기반 값이 위에서 설명한 숫자 값으로 저장되었는지 확인하는 것이 중요합니다. 대부분의 경우 JMP는 가져오기 또는 복사/붙여넣기 작업 중에 시간 기반 값을 인식하기 위해 이 작업을 자동으로 수행합니다. 데이터 테이블에서 열의 값이 어떤 방식으로 정렬되어 있는지 확인하면 정렬이 올바르게 수행되었는지 확인할 수 있습니다. 숫자 값은 오른쪽 정렬되고, 문자 값은 왼쪽 정렬됩니다.
Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.잘못된 것은 문자 열입니다. 왼쪽 정렬되어 있습니다. 오른쪽은 숫자 열입니다. 오른쪽 정렬되어 있습니다.
시간 기반 값이 문자열로 저장된 경우, 열 정보 대화 상자를 사용하여 해당 값을 변환할 수 있습니다. 데이터 형식을 숫자로, 형식을 원하는 날짜/시간 형식으로, 입력 형식을 데이터에 포함된 문자열을 설명하는 형식으로 변경하기만 하면 됩니다. 그러면 JMP가 해당 값을 적절한 숫자 값으로 변환합니다.
First change the Data Type to Numeric.First change the Data Type to Numeric.First change the Data Type to Numeric.First change the Data Type to Numeric.First change the Data Type to Numeric.먼저 데이터 유형을 숫자형으로 변경합니다.
Pick the Format that you want to use to display the time-based value.Pick the Format that you want to use to display the time-based value.Pick the Format that you want to use to display the time-based value.Pick the Format that you want to use to display the time-based value.Pick the Format that you want to use to display the time-based value.시간 기반 값을 표시하는 데 사용할 형식을 선택하세요.
Finally, change the Input format to match the format of the strings in the column.Finally, change the Input format to match the format of the strings in the column.Finally, change the Input format to match the format of the strings in the column.Finally, change the Input format to match the format of the strings in the column.Finally, change the Input format to match the format of the strings in the column.마지막으로, 입력 형식을 열의 문자열 형식과 일치하도록 변경합니다.
Date()를 구문 분석하는 유용한 함수
날짜 구문 분석() 함수(및 별칭 잘 아는() )는 문자열을 숫자 값으로 변환하는 데에도 유용합니다. 선택적인 세 번째 인수 없이 사용하면 입력 문자열을 스캔하여 적절한 입력 형식을 찾습니다. 따라서 입력 형식에 관계없이 모든 용도로 사용할 수 있습니다.
시간 기반 값을 사용한 계산(즉, 수학)
이러한 모든 시간 기반 값을 숫자로 저장하면 이를 바탕으로 수학 연산을 수행하여 연령, 특정 이벤트 이후 경과 시간을 계산하고, 다른 시간 단위로 변환하는 등의 작업을 수행할 수 있습니다.
예를 들어, JMP에서 두 날짜, 시간 또는 날짜/시간 값의 차이는 두 값 사이의 초 수입니다.
즉, 결과를 분, 일, 주 또는 년과 같은 더 친숙한 단위로 변환해야 합니다(힌트: 시간 내() , 몇 주 안에() 및 기타 In...() 함수가 도움이 될 수 있습니다.)
JMP에는 시간 기반 값에 대한 계산을 더 쉽게 해주는 여러 가지 기본 제공 함수가 있습니다.
제가 가장 좋아하는 것 몇 가지를 소개합니다.
시간(날짜시간)
이 함수는 datetime 값의 시간(즉, 자정 이후 경과된 초 수)을 반환합니다. 이 함수는 datetime 값을 날짜 값으로 변환하는 데 매우 유용합니다. datetime 값에서 Time of Day() 함수를 빼기만 하면 됩니다.
datetime = Today();
date = datetime - Time Of Day( datetime );
Show( As Date( date ) );
날짜 차이(datetime1, datetime2, "간격_이름", <"정렬">)
이 함수는 두 날짜/시간 값의 차이를 반환합니다. 물론, 단순히 하나를 다른 하나에서 빼는 것만으로 두 값 사이의 초 수를 구할 수 있습니다. 하지만 Date Difference() 함수는 "interval_name" 인수를 사용하여 차이를 반환할 시간 단위를 지정할 수 있습니다. 예를 들면 다음과 같습니다.
datetime1 = 01Sep2018:03:00:01;
datetime2 = 04Sep2018:14:10:15;
Date Difference( datetime1, datetime2, "Hour" );
Date Time 함수 전체 목록을 꼭 확인해 보세요. 시간 기반 값을 다루는 작업이 훨씬 쉬워집니다.
JSL의 날짜 및 시간 상수
JSL에서 날짜, 날짜/시간, 시간 상수를 표현하려면 특정 형식으로 지정해야 합니다. 날짜의 경우 ddMONyyyy 형식으로, 시간의 경우 dd:hh:mm:ss 형식으로 지정해야 합니다. 예:
time = 14:10:15;
date = 18Jan1957;
datetime = 11Jul2000:03:10:12;
@Jeff_Perkinson 님 , 사용 가능한 기능에 대한 훌륭한 개요를 공유해 주셔서 감사합니다.
이 게시물을 다시 살펴보고 이러한 기능을 일상 업무에 적용하면 투자 수익률(ROI)이 매우 뛰어납니다.
JMP는 데이터 가져오기, 데이터 큐레이션, 날짜 데이터 분석에 유용한 기능을 많이 제공하며, 실제로 실무에 큰 변화를 가져다줍니다!
그 외에도 기능이 누락되었거나 개선될 여지가 있는 부분, JMP가 예상치 못하게 동작하는 부분 등이 있습니다. 또한 "MDY"와 "DMY"의 차이, Unix/Python에서 타임스탬프의 날짜 가져오기, "Z" 또는 ms 관련 문제 등 버그, 또는 적어도 전 세계 일부 사용자에게 버그처럼 느껴지는 부분도 있습니다.
일상 업무에서 날짜와 시간에 문제가 있다면, 문제가 나열되어 있는지 확인한 후 링크를 따라 투표하세요!
해당 항목이 목록에 없으면, 아래에 문제를 게시하거나 위시리스트에 직접 게시해 주세요.
JMP를 더욱 다듬어 보세요. 세상보다 더 둥글게 만들어 봅시다.;)
특징/편안함:
벌레 / 벌레 같은 느낌:
변환할 때 유용한 또 다른 팁을 알려드리겠습니다.
위에서 언급했듯이, 날짜 변환의 첫 번째 문제는 JMP가 백그라운드에서 날짜를 1904년 1월 1일 자정(오전 12시) 이후 경과된 초 단위로 "읽어"낸다는 점입니다. (엑셀은 1900년 1월 1일부터 날짜를 읽어 거의 40억 초를 계산하는데, 이는 2026년 10월 3일 오전 7시 6분 40초에 도달하는 시점입니다.) 따라서 날짜 변환 시 39억 정도의 값이 나타나는 경우가 있습니다.
둘째, 보고 있는 시간 형식을 변경할 수는 있지만, JMP는 원래 가져온 형식 그대로 시간을 "읽어냅니다". 예를 들어, 2020년 1월 15일이라는 날짜가 있고 1월의 모든 날짜를 MM/YYYY 형식으로 그룹화(그래프 또는 표 작성용)하고 싶다면, 단순히 형식을 MM/YYYY로 변경하는 것만으로는 작동하지 않습니다. JMP는 여전히 원래 가져온 날짜 형식으로 "읽어냅니다".
그렇긴 하지만, 제가 날짜를 활용 가능한 형식으로 변환하는 데 가장 성공적이었던 방법은 다음과 같습니다.
- 날짜에서 MM/YYYY 형식을 얻으려면 Date DMY( 1, Month( :TRANSACTION_DATE ), Year( :TRANSACTION_DATE ) )를 MM/YYYY 형식으로 사용합니다.
- 날짜의 YYYYQq 형식(예: 2020Q1)을 사용하려면 Date DMY( 1, Floor( (Month( :TRANSACTION_DATE ) - 1) / 3 ) * 3 + 1, 연도( :TRANSACTION_DATE ) ) 를 사용합니다 .
두 방법 모두 기본적으로 특정 월의 모든 날짜를 가져와 각각 해당 월 또는 분기의 첫째 날에 배치합니다. 다소 이상한 해결책처럼 보일 수 있지만, 표 작성, 시계열 분석, 그래프 작성 등 필요한 작업을 수행하는 데는 효과적입니다.