Re: Usando Fecha Máxima para ConsultarSin conocer los detalles, parece que debería poder mantener todo esto dentro de una consulta. Sin embargo, siempre puede usar el Generador de consultas para hacer un máximo en la tabla en cuestión con las fechas, y luego extraer ese valor para sustituirlo en otro fragmento de secuencia de comandos SQL. Un ejemplo del script de Query Builder que trabaja en la base de datos de películas, la tabla de alquileres donde la columna de fecha tiene la fecha de alquiler, el script emitido sería como:
New SQL Query(
Connection( "ODBC:DSN=SQLServer SQBTest;UID=sa;PWD=%_PWD_%;APP=JMP;WSID=machine;DATABASE=SQBTest;" ),
QueryName( "g6_Rentals" ),
Select(
Column(
"OrderDate",
"t1",
Alias( "Maximum-OrderDate" ),
SavedJMPName( "OrderDate" ),
Aggregation( "Maximum" ),
JMP Name( "Maximum-OrderDate", 0 ),
Numeric Format( "m/d/y", "-1", "NO", "" )
)
),
From( Table( "g6_Rentals", Schema( "SQBTest" ), Alias( "t1" ) ) )
) << Run Foreground();
val = Column( 1 )[1];
Show( As Date( val ) );
Aquí estaba haciendo un Agregado de Máximo en la columna de fecha. La tabla resultante tiene una fila y una columna, y tomamos el valor de eso y lo mostramos en el registro para asegurarnos de que sea correcto.
Brian Corcoran
Desarrollo JMP
Re: Usando Fecha Máxima para Consultar¿Sería capaz de mostrar cómo insertaría la Fecha máxima en el siguiente SQL de la primera tabla?
La tabla que estoy usando tiene una columna etiquetada como Purchase_Date, que es lo que haría al máximo para consultar nuevos datos de la base de datos. A continuación se muestra un ejemplo de la consulta:
dbc = crear conexión de base de datos ( "DSN = PROD; UID =" || IDC || "; PWD =" || PASSS || "; MODE = COMPARTIR; DBALIAS = PROD" );
data_sql = evalinsert ( "
Seleccione CUST_NM, PURCHASE_AMT, PURCHASE_DATE, PURCHASE_TM, ORDER_NUM, PRODUCT_NM, PRODUCT_TYP, COUNTRY_CD, APPROVE_DECLINED
de PURCHASE_DATA
donde PURCHASE_DATE> '2019-08-16'
y PRODUCT_TYP = 'Y'
y COUNTRY_CD en ('0840')
y APPROVE_DECLINED = 'A' " );
data_dt = ejecutar sql (dbc, data_sql);
cerrar la conexión de la base de datos (dbc);
Re: Usando Fecha Máxima para ConsultarUsando mi ejemplo anterior, si continúa con:
val = Columna (1) [1];
espectáculo (val);
Mostrar (como fecha (val));
sql = eval insert ("select * where buy_date> ^ As Date (val) ^");
espectáculo (sql);
Entonces el registro muestra:
val = 3376598400;
Como Fecha (val) = 31Dic2010;
sql = "select * where buy_date> 31Dec2010";
para que luego puedas ejecutar el sql resultante.
Re: Usando Fecha Máxima para ConsultarGracias Brian, eso funciona como se esperaba. ¿Es posible tener el val reformateado en un formato numérico (como 31/12/2010 o 31/12/2010)? Tener un carácter como Dec en la fecha no funciona para mi consulta.
Re: Usando Fecha Máxima para ConsultarModificando mi ejemplo de antes, podrías hacer:
val = Column( 1 )[1];
dv = As Date( val );
dvf = Format( dv, "m/d/y" );
Show( dvf );
sql = Eval Insert( "select * where purchase_date > ^dvf^" );
Show( sql );
Re: Usando Fecha Máxima para ConsultarHola Brian,
Realmente pude hacerlo funcionar editando las líneas que ya ha proporcionado. Acabo de agregar una línea adicional a la porción val para incluir las comillas simples. Val actualizado con comillas simples a continuación, no dude en criticar si es necesario.
val = Column( 1 )[1];
dv = As Date( val );
dvf = Format( dv, "yyyy-mm-dd" );
dvfs = ("'" || dvf || "'");
Show( dvfs );
sql = Eval Insert( "select * where purchase_date > ^dvfs^" );
Re: Usando Fecha Máxima para ConsultarHola Brian,
Quiero agregar comillas simples alrededor de la Fecha (necesario para consultar desde un DB en particular). ¿Agregaría la cita simple directamente a la evaluación?
Ejemplo:
sql = Eval Insert( "select * where purchase_date > '^dvf^'" );
Re: Usando Fecha Máxima para ConsultarSi usa Oracle, podría considerar usar TO_DATE en su campo de fecha para que el formato de fecha no sea ambiguo. Si está utilizando SQL Server, aaaa-mm-dd es el formato predeterminado, por lo que no es necesaria la conversión.
dv = today();
dvf = Format( dv, "yyyy-mm-dd" );
sql = Eval Insert( "select * where purchase_date > TO_DATE('^dvf^', 'yyyy-mm-dd')" );
show(sql);Re: Usando Fecha Máxima para Consultar
Gracias pmroz. Código simple y sencillo. Muy útil.
Usar fecha máxima para consultarHola,
Tengo un archivo que se actualiza semanalmente según la Fecha máxima en la columna de fecha. Cada semana abro el archivo, miro la Fecha Máxima actualmente y luego consulto los datos que están después de la Fecha Máxima. ¿Sería posible extraer la Fecha máxima e insertarla en la consulta que estoy usando?
Actualmente mi archivo se actualiza al 15/08/2019 y me gustaría consultar datos que sean> 15/8/2019 para actualizar el archivo.