J'essaie de formater des années et des mois d'une manière comme YY-mm
Je peux calculer comme ceci pour obtenir la valeur de mon année: p> et ceci Pour obtenir la valeur des mois: p> ROUND(months_between(sysdate,hiringdate))
4 Réponses :
Probablement un million de façons de le faire. L'un d'eux est celui-ci:
SELECT RIGHT (CAST (YEAR (GETDATE()) AS VARCHAR(4)), 2) + '-' + RIGHT ('0' + CAST (MONTH (GETDATE()) AS VARCHAR (2)), 2)
Comment allez-vous le faire avec TO_CHAR?
Ni droit code> ni Année code> ni getDate code> sont des fonctions Oracle.
@Wernfrieddomschéit - En justice à ce répondant, l'OP a été publié à l'origine la question simplement comme SQL code>. Il a ajouté la balise code> oracle code> 20 minutes après b> Cette réponse a été postée.
Cela dépend: il y a beaucoup de saveurs de SQL. P>
dans oracle et standard SQL, vous pouvez utiliser dans mysql il y a le dans sas il y a la Rechercher Comment faire sur votre plate-forme ou le faire savoir lequel c'est. P> string1 || string2 code>, p>
concat (string1, string2) code> fonction p>
compresse (string1 || string2) code> Déclaration, qui ressemble à une combinaison de ce qui précède. P>
Ceci ressemble à Oracle, alors essayez ceci:
select (lpad(floor(months_between(sysdate, hiringdate)/12), 2, '0') || '-' ||
lpad(mod(floor(months_between(sysdate, hiringdate)), 12), 2, '0')
) as yymm
Tu pourrais faire quelque chose comme ça. Utilisation de la table code> EMP code> dans le schéma code> Scott code> pour tester.
select empno, ename, hiredate,
to_char(floor(mths/12), 'fm99') || '-' ||
to_char(mod(mths, 12) , 'fm00') as yymm
from (
select empno, ename, hiredate,
round(months_between(sysdate, hiredate)) as mths
from scott.emp
)
;
EMPNO ENAME HIREDATE YYMM
---------- ---------- ----------- -------
7369 SMITH 17-DEC-1980 38-03
7499 ALLEN 20-FEB-1981 38-01
7521 WARD 22-FEB-1981 38-01
7566 JONES 02-APR-1981 38-00
7654 MARTIN 28-SEP-1981 37-06
7698 BLAKE 01-MAY-1981 37-11
7782 CLARK 09-JUN-1981 37-09
7788 SCOTT 19-APR-1987 31-11
7839 KING 17-NOV-1981 37-04
7844 TURNER 08-SEP-1981 37-06
7876 ADAMS 23-MAY-1987 31-10
7900 JAMES 03-DEC-1981 37-04
7902 FORD 03-DEC-1981 37-04
7934 MILLER 23-JAN-1982 37-02
convertir en cordes puis concat avec +
Veuillez fournir des exemples de données, des résultats souhaités et une balise de base de données.
Êtes-vous sûr que vous voulez seulement utiliser 2 chiffres depuis des années? Cela peut causer des problèmes.
@Tom Eh bien, juste le nombre de nombreuses années entre aujourd'hui et leur date d'embauche. 2 chiffres est tout ce qui est nécessaire pour cette information
@ user11119624 Vous devez étiqueter la question avec la balise de base de données appropriée et ajouter vos échantillons de données à la question elle-même.