par , 27/11/2022 à 13h26 (528 Affichages)
Un mauvais typage de colonne à rattraper... Quelle idée de coder une date dans un CHAR(6) AAMMJJ au lieu d'un bon vieux DATE !
Voici l'idée pour ce 3e exercice la date an 2000 !
Il va falloir ajouter 1900 au deux premiers caractères de la valeur si elle est supérieure ou égale à 60. Sinon lui ajouter 2000.
Rien de bien compliqué. MySQL permet d'additionner des entiers et des chaînes sans CAST() explicite, est-ce pareil avec les autres SGBD ?
Ma solution :
1 2 3 4 5 6 7
| UPDATE T_AMORTISSEMENT_AMT
SET AMT_FIN_Y2K = CONCAT_WS(
'-',
SUBSTRING(AMT_FIN FROM 1 FOR 2) + CASE WHEN AMT_FIN >= '600101' THEN 1900 ELSE 2000 END,
SUBSTRING(AMT_FIN FROM 3 FOR 2),
SUBSTRING(AMT_FIN FROM 5 FOR 2)
); |
Notons que la nouvelle colonne T_AMORTISSEMENT_AMT.AMT_FIN_Y2K est un CHAR(10) et toujours pas un DATE