¿Cómo convierto una "cadena" numérica en una fecha?Soy un usuario nuevo y estoy intentando convertir una cadena numérica a un formato de fecha jmp.
Intenté crear una nueva columna concatenando una cadena de caracteres para que al menos pudiera obtener el resultado "ddmmaaa" deseado:
(Substr( :START_DATE, 7, 2 ) || Substr( :START_DATE, 5, 2 )) ||Substr( :START_DATE, 1, 4 ) pero eso no me llevó más lejos.
¿Alguna idea sobre esto?

Re: ¿Cómo convierto una cadena numérica en una fecha?No lo siento, ya funciona.
Gracias por la ayuda
Re: ¿Cómo convierto una cadena numérica en una fecha?En realidad, cuando lo ejecuto en el archivo de prueba me faltan datos en todas las filas. Utilizo JMP 12. ¿Puede ser ese el motivo?Re: ¿Cómo convierto una cadena numérica en una fecha?Gracias - eso ayudaRe: ¿Cómo convierto una cadena numérica en una fecha?Existen algunas diferencias entre cómo se utiliza el script de Jim y la fórmula de columna.
- La fórmula de la columna crea una nueva columna basada en los datos antiguos. Si se agregan nuevas filas, la fórmula se ejecuta automáticamente para convertir los valores de fecha. La columna de datos anterior no se puede eliminar a menos que primero se elimine la fórmula.
- El script se ejecuta una vez, desde un editor de scripts. El script de Jim convierte la columna en su lugar, cambiando el número de la representación original a una representación de fecha y hora JMP. Si se agregan más datos después de ejecutar el script, se deben agregar usando el formato de fecha y hora JMP que espera la columna.
Creo que la pregunta que tal vez quieras responder es "¿cómo conseguí estas fechas que no le gustan a JMP y cuál sería un mejor enfoque?"
Cuando importó estos datos a JMP, posiblemente desde un archivo CSV, o cuando los escribió en una tabla nueva, JMP vio un número e hizo una columna numérica. Para que JMP vea una fecha en 20180315 en lugar de 20,180,315 debe indicarle a JMP que interprete los datos en formato aaaammdd. Puede hacerlo con las propiedades de la columna en una tabla de datos y especificar tanto la información como el formato.
informat yyyymmdd format monddyyyyinformat yyyymmdd format monddyyyyinformación aaaammdd formato lunesaaa
Input Format available after choosing FormatInput Format available after choosing FormatFormato de entrada disponible después de elegir Formato
Si está utilizando la importación de archivos de texto para obtener los datos de un archivo CSV, también puede especificar un formato para la columna usando el triángulo rojo sobre la columna en la segunda página del asistente de vista previa.
Text import preview wizard second pageText import preview wizard second pageSegunda página del asistente de vista previa de importación de texto
Finalmente, los valores de fecha y hora de JMP se representan como el número de segundos desde el 1 de enero de 1904. https://www.jmp.com/support/help/14/date-time-functions.shtml tiene mucha más información.Si ve un número enorme que no tiene sentido, probablemente necesite un formato. Puede cambiar el formato de salida, mostrando 03 o Mar, ya que la representación interna sigue siendo la misma.
Re: ¿Cómo convierto una cadena numérica en una fecha?1. Dada la tabla de datos de muestra que proporcionó, el script que publiqué funciona bien. Ver archivo adjunto
2. el 12 es el ancho de la visualización del formato.Ver:
Ayuda==>Índice de secuencias de comandos==>Tabla de datos==>Secuencias de comandos de columnas
para una descripción y ejemplos
Re: ¿Cómo convierto una cadena numérica en una fecha?esta publicación se trata de la parte (\d\d). Los padres crean grupos y \d coincide con un solo dígito.
esta publicación se trata de \1-\2-\3. esas son referencias anteriores y texto adicional (los guiones) insertados en la cadena de resultado. Los números se refieren al paréntesis abierto correspondiente.
Regex es una herramienta poderosa, hay muchos tutoriales en Internet.
Este ejemplo es excesivo para el problema que nos ocupa; JMP tiene información de fecha que ya coincide con el formato de sus números después de convertirlos a caracteres.
Re: ¿Cómo convierto una cadena numérica en una fecha?Gracias por compartir. Entiendo esto mejor, sin embargo, solo me funciona en la primera fila. Después de eso simplemente devuelve "valores faltantes".
Además, ¿qué hace el "12" en
dt : fecha de inicio < < formato ( "ddmmaaaa" , 12 ) ;
?
Re: ¿Cómo convierto una cadena numérica en una fecha?Gracias, esto funciona. Aunque no estoy del todo seguro de entenderlo completamente.
Es el ¿"(\d\d\d\d)(\d\d)(\d\d)" indica el formato de entrada?
¿Qué está haciendo "\1-\2-\3"?
Gracias por ayudar
Re: ¿Cómo convierto una cadena numérica en una fecha?Jim: comencé mal. El formato aaaammdd funciona sin expresiones regulares ni substr:
Información( Char( :START_DATE ), "aaaammdd" )
Re: ¿Cómo convierto una cadena numérica en una fecha?Aquí hay un script simple para hacer lo mismo que hizo Craige.
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:start_date = Date MDY(
Num( Substr( Char( :start_date ), 5, 2 ) ),
Num( Right( Char( :start_date ), 2 ) ),
Num( Left( Char( :start_date ), 4 ) )
)
);
dt:start_date << format("ddmmyyyy",12);Re: ¿Cómo convierto una cadena numérica en una fecha?Estás muy cerca; Necesitará char(start_date) para obtener una cadena del número. Probé un enfoque ligeramente diferente para una fórmula de columna.
Informat( Regex( Char( :START_DATE ), "(\d\d\d\d)(\d\d)(\d\d)", "\1-\2-\3" ), "ymd" )
y establecer el formato de la columna
Output format different from input formatOutput format different from input formatFormato de salida diferente al formato de entrada
La representación interna preferida de JMP para las fechas es el valor de fecha y hora de JMP, que es un valor numérico que se puede formatear con varios formatos diferentes.