Función de fecha en jsl.Tengo una tabla que tiene una marca de tiempo para todas las filas.
Pero solo necesito los datos de los últimos 7 días. ¿Hay una manera fácil de eliminar todos los datos que hayan pasado los últimos 7 días?
Nuevo en jsl y cualquier entrada será útil.
Re: Función de fecha en jsl.Aquí hay un script completo que debería mostrarle un resultado.
Names Default to Here( 1 );
dt = New Table( "test",
add rows( 100 ),
New Column( "start date",
formula( Random Uniform( Today() - In Days( 12 ), Today() ) ),
Format( "m/d/y", 10 )
)
);
dt:start date << delete formula;
New Column( "START_SHORT_DATE",
Formula( :start date - Time Of Day( :start date ) ),
Format( "m/d/y", 10 ),
);
New Column( "Todays Date",
Formula( Today() - Time Of Day( Today() ) ),
Format( "m/d/y", 10 )
);
New Column( "Ref Date",
Formula( Today() - In Days( 7 ) ),
Format( "m/d/y", 10 ),
);
Current Data Table() << select where( :Ref Date < :START_SHORT_DATE );
Re: Función de fecha en jsl.Lo siento, no entendí esto antes. Necesitará Ejecutar fórmulas() para asegurarse de que todas las fórmulas se evalúen antes de Seleccionar dónde().
Clear Symbols();
Delete Symbols();
clear globals();
//Open master data list
S = Open("~/Downloads/sample.xlsx");
New Column( "START_SHORT_DATE",
Formula( :start date - Time Of Day( :start date ) ),
Format( "m/d/y", 10 ),
);
New Column( "Todays Date",
Formula( Today() - Time Of Day( Today() ) ),
Format( "m/d/y", 10 )
);
New Column( "Ref Date",
Formula( Today() - In Days( 7 ) ),
Format( "m/d/y", 10 ),
);
s << run formulas();
s << select where( :Ref Date < :START_SHORT_DATE );
Por cierto: realmente no necesitas todas las columnas de fórmula para hacer esto.
Clear Symbols();
Delete Symbols();
Clear Globals();
//Open master data list
S = Open( "~/Downloads/sample.xlsx" );
s << select where(
(Today() - Time Of Day( Today() ) - In Days( 7 )) < :start date - Time Of Day( :start date )
);
Re: Función de fecha en jsl.Copié exactamente el mismo código e intenté ejecutarlo. Todas las columnas se crean correctamente. Pero la siguiente línea no parece funcionar:
"
<SPAN class="token function">current data table</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">)</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> select where</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Ref Date <SPAN class="token operator"><</SPAN> <SPAN class="token punctuation">:</SPAN>START_SHORT_DATE <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
No se selecciona nada. Intenté usar los operadores mayor que, menor que e igual a. Nada parece funcionar.
Re: Función de fecha en jsl.El problema es que las funciones Cita corta() y Fecha abreviada() devuelve cadenas de caracteres, no valores de fecha. No puede comparar un valor de fecha (que es numérico) con una cadena de caracteres.
Prueba esto en su lugar:
New Column( "START_SHORT_DATE",
Formula( :start date - Time Of Day( :start date ) ),
Format( "m/d/y", 10 ),
);
New Column( "Todays Date",
Formula( Today() - Time Of Day( Today() ) ),
Format( "m/d/y", 10 )
);
New Column( "Ref Date",
Formula( Today() - In Days( 7 ) ),
Format( "m/d/y", 10 ),
);
current data table() << select where( :Ref Date < :START_SHORT_DATE );
Re: Función de fecha en jsl.Aquí está el código -
Clear Symbols();
Delete Symbols();
clear globals();
//Open master data list
S = Open("C:\Enthu\sample.xlsx","invisible");
current data table(S);
New Column( "START_SHORT_DATE", Numeric, Formula( Short Date( :start date ) ), );
New Column("Todays Date", Character,Formula(Abbrev Date(today())));
New Column("Ref Date", Character,Formula(Abbrev Date(today()-In Days(7))));
S << select where( :Ref Date < :START_SHORT_DATE );
Re: Función de fecha en jsl.¿Puede mostrar el código exacto que está utilizando que no funciona y podría proporcionar una muestra de su tabla de datos?
Re: Función de fecha en jsl.Gracias por la respuesta. Como mencioné anteriormente, creé una nueva columna e imprimí hoy () - En días (7) que funciona perfectamente bien.
Después de esto, si intento comparar 2 columnas, no veo ningún resultado/error. Todas las columnas de fecha son numéricas.
Re: Función de fecha en jsl.No tengo disponible JMP 12 para verificar si la función In Days() está disponible.Sin embargo, dado que todo lo que hace In Days() es determinar la cantidad de segundos en un día y luego multiplicar el resultado por el número en el (7), puede simplemente cambiar la fórmula a:
today()-7*60*60*24
Re: Función de fecha en jsl.Este fragmento de script no funciona para mí.
la parte "hoy() - Indays(7) funciona, pero hay algún problema con la comparación de fechas.
El depurador no muestra ningún error, pero no sucede nada cuando ejecuto esto. Estoy usando JMP 12. ¿Es eso un problema?
Re: Función de fecha en jsl.dt << select where( today() - In Days( 7 ) < :Your date column );
dt << delete rows;
Esto seleccionará todas las filas donde su columna de fecha (reemplace su nombre en la primera línea del JSL), sea menor que la fecha y hora actual: 7 días.Luego, eliminar filas eliminará todas las filas seleccionadas.
Si desea que las filas se eliminen 7 días antes de la medianoche, no 7 días antes de este punto en el tiempo (hoy()), entonces debe restar la hora actual del valor de las funciones de hoy().
dt << select where( today() - Time of Day( today() ) - In Days( 7 ) < :Your date column );
dt << delete rows;