Short Date () erstellt eine gesperrte ZeichenspalteWenn ich im folgenden Skript eine Spalte "Datum" erstelle, wird eine gesperrte Spalte erstellt (damit ich das Format nicht ändern kann).Short Date() in der Formel scheint das Problem zu sein.
Die Zeitspalte bleibt numerisch, nachdem die Formel angewendet wurde.
Wie bekomme ich das "Datum", um numerisch zu bleiben?
Das Datum steht später in einem Kalender (), um den Kalender so einzustellen, dass nur Tage angezeigt werden, an denen Daten vorhanden sind.
_____________________________________________________
//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" ) ) ) );Danke
Matt
Betreff: Short Date () Erstellen einer gesperrten ZeichenspalteSie können dies auch nur mit der Nummer tun, indem Sie die Datumszeit von Sekunden auf Tage und den Boden ändern.
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)
),
);
Betreff: Short Date () Erstellen einer gesperrten ZeichenspalteWenn Sie ein wenig mehr über Ihre JSL nachdenken, können Sie Folgendes verwenden, um Ihre Datumsspalte zu füllen
Column( "Date") << set Formula( informat(Short Date( :Name( "Date & Time" ) ), "mm/dd/yyyy") );
Es verwendet einfach die Informat()-Funktion, die eine wörtliche Zeichenfolge übernimmt und einen numerischen JMP-Datumswert zurückgibt
Betreff: Short Date () Erstellen einer gesperrten ZeichenspalteJim,
Danke für eine so gut erklärte Antwort. Ihre Beiträge sind immer informativ, lehrreich und leicht zu verfolgen.
MattBetreff: Short Date () Erstellen einer gesperrten ZeichenspalteDie Probleme, die Sie haben, sind mit dem Verständnis dessen, was die Funktion Short Date() zurückgibt.Es gibt keinen JMP-Datumswert zurück, der die Anzahl der Sekunden seit 12:00 Uhr am 1. Januar 1904 wäre, sondern stattdessen eine Literalzeichenfolge des Datumsteils eines JMP-Datumswerts.Um dies zu veranschaulichen, zeigt die folgende JSL, was Short Date() zurückgibt:
show(short date(today())); <BR />
und es kehrt zurück
Short Date(Today()) = "12/03/2019";
Und da in Ihrer JSL eine Literalzeichenfolge zurückgegeben wurde, wurde die Datumsspalte in eine Zeichenspalte geändert.
Eigentlich möchten Sie die Funktion DateMDY() verwenden, um den Datumswert zu erstellen.
Unten ist eine überarbeitete Version Ihres Codes, die meiner Meinung nach das tut, was Sie brauchen:
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" ) ) );