Este artículo explica cómo mantener una variable numérica subyacente (para los cálculos) mientras se fuerza su visualización en formato de fecha.
El Problema: Almacenamiento vs Visualización
Desea crear una tabla donde la fecha se almacene como un número (para permitir futuras ordenaciones y cálculos) pero se muestre como una fecha legible (16JUL2023).
/* 1. Création via FedSQL */
proc fedsql;
create table work.ma_table as
select datepart(timestamp_col) as ma_date
from source;
quit;
/* 2. Modification des métadonnées via PROC DATASETS */
proc datasets lib=work nolist;
modify ma_table;
format ma_date date9.;
quit;
run;
1
/* 1. Création via FedSQL */
2
PROC FEDSQL;
3
create TABLE work.ma_table as
4
select datepart(timestamp_col) as ma_date
5
from SOURCE;
6
QUIT;
7
8
/* 2. Modification des métadonnées via PROC DATASETS */
Es tentador resolver el problema directamente en SQL convirtiendo los datos:
/* À ÉVITER si vous voulez garder du numérique */
SELECT PUT(ma_date, date9.) as ma_date_str ...
1
/* À ÉVITER si vous voulez garder du numérique */
2
SELECT PUT(ma_date, date9.) as ma_date_str ...
¿Por qué es peligroso? La función PUT transforma su fecha en una cadena de caracteres (VARCHAR).
Pierde la capacidad de ordenar cronológicamente (la ordenación se volverá alfabética: "01FEB..." aparecerá antes de "01JAN...").
Pierde la capacidad de realizar cálculos de fechas (añadir días, calcular diferencias).
El caso particular de las funciones implícitas
Tenga en cuenta que en ciertos contextos, FedSQL es "inteligente". Si utiliza una función que devuelve explícitamente un tipo de fecha (como DATEPART en una marca de tiempo), FedSQL a veces puede asignar automáticamente un formato predeterminado a la columna resultante. Sin embargo, para un control preciso (por ejemplo, preferir DDMMYY10. a DATE9.), los métodos de post-procesamiento (CASUTIL o DATASETS) siguen siendo las únicas garantías fiables.
Función PUT() en el SELECT (se convierte en VARCHAR)
Avertissement important
Les codes et exemples fournis sur WeAreCAS.eu sont à but pédagogique. Il est impératif de ne pas les copier-coller aveuglément sur vos environnements de production. La meilleure approche consiste à comprendre la logique avant de l'appliquer. Nous vous recommandons vivement de tester ces scripts dans un environnement de test (Sandbox/Dev). WeAreCAS décline toute responsabilité quant aux éventuels impacts ou pertes de données sur vos systèmes.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.