잠긴 문자 열을 만드는 짧은 날짜 ()아래 스크립트에서 "날짜"열을 만들면 잠긴 (형식을 변경할 수 없음) 열이 만들어집니다. 수식의 짧은 Date ()가 문제인 것 같습니다.
수식이 적용된 후 시간 열은 숫자로 유지됩니다.
"날짜"를 숫자로 유지하려면 어떻게해야합니까?
날짜는 나중에 calender ()에 있으며 데이터가있는 날만 표시하도록 캘린더를 설정합니다.
_____________________________________________________
//Open
dt_run = Open( "data.jmp");
dt_run << New Column( "Date", Numeric, Continuous, Format("m/d/y"), Input Format( "m/d/y h:m:s"));
Column( "Date") << Add Column Properties( Formula( Short Date( :Name( "Date & Time" ) ) ) );
dt_run << New Column( "Time", Numeric, Continuous, Format("h:m"), Input Format( "m/d/y h:m:s"));
Column( "Time") << Add Column Properties( Formula( Time Of Day( :Name( "Date & Time" ) ) ) );감사
매트
다시 : 짧은 날짜 () 잠긴 문자 열 만들기당신이 겪고있는 문제는 Short Date () 함수가 무엇을 반환하는지 이해하는 데 있습니다. 1904 년 1 월 1 일 오전 12시 이후의 초 수인 JMP 날짜 값을 리턴하지 않고 JMP 날짜 값의 날짜 부분의 리터럴 문자열을 리턴합니다. 이를 설명하기 위해 다음 JSL은 Short Date ()가 반환하는 내용을 표시합니다.
show(short date(today())); <BR />
그리고 그것은 반환
Short Date(Today()) = "12/03/2019";
그리고 JSL에서 리터럴 문자열을 반환했기 때문에 Date 열을 문자 열로 변경했습니다.
실제로 원하는 것은 DateMDY () 함수를 사용하여 날짜 값을 만드는 것입니다.
아래는 내가 필요하다고 생각하는 것을 수행하는 코드의 재 작업 버전입니다.
Names default to here(1);
dt_run = new table("data",add rows(1), new column("Date & Time",formula(today()),format("m/d/y h:m:s")));
dt_run << New Column( "Date", Numeric, Continuous, Format("m/d/y"));
Column( "Date") << set Formula( DateMDY(Month(:Name( "Date & Time" )),Day(:Name( "Date & Time" )),Year(:Name( "Date & Time" )) ) );
dt_run << New Column( "Time", Numeric, Continuous, Format("h:m"));
Column( "Time") << set Formula( Time Of Day( :Name( "Date & Time" ) ) );다시 : 짧은 날짜 () 잠긴 문자 열 만들기짐,
잘 설명 된 답변에 감사드립니다. 게시물은 항상 유익하고 교육적이며 이해하기 쉽습니다.
매트다시 : 짧은 날짜 () 잠긴 문자 열 만들기JSL에 대해 조금 더 생각하면 ......... 다음을 사용하여 Date 열을 채울 수 있습니다.
Column( "Date") << set Formula( informat(Short Date( :Name( "Date & Time" ) ), "mm/dd/yyyy") );
리터럴 문자열을 가져와 숫자 JMP Date 값을 반환하는 Informat () 함수 만 사용합니다.
다시 : 짧은 날짜 () 잠긴 문자 열 만들기날짜 시간을 초에서 일 및 바닥으로 변경하여 숫자 만 사용하여 수행 할 수도 있습니다.
Names Default to Here( 1 );
dt = New Table( "Test",
Add Rows( 1 ),
New Column( "DateTime",
Numeric,
"Continuous",
Format( "m/d/y h:m:s", 23, 0 ),
Formula( Today() ),
)
);
dt << New Column("Date",
Numeric,
"Continuous",
Format( "m/d/y", 23 ),
Formula(
num_s_per_day = 24*60*60; // # seconds/day
Floor(
:DateTime // take the date time which is a number in seconds
/ num_s_per_day // turn it into days by dividing
) // this will round down to the day
* num_s_per_day // turn it back into seconds (a date time)
),
);