Bonjour
Quelques requêtes permettant le calcul à partir de dates.
Le principe est de récupérer une valeur pouvant être interprétée comme une date par le moteur de base de données.
Ajout de valeurs à une date. (La fonction TO_CHAR n'est utile que pour la présentation des données).
Les valeurs ajoutées sont en dur dans la requête mais peuvent bien sur être récupérées à partir d'un autre champ.
Ajout d'une année
Code : Tout sélectionner
SELECT "maDate", TO_CHAR( CAST( YEAR( "maDate" ) + 1 || '-' || MONTH( "maDate" ) || '-' || DAY( "maDate" ) AS "DATE" ), 'DD MONTH YYYY' ) AS "AjoutAnnee_+1" FROM "tDates"
Le principe est le même pour l'ajout ou la soustraction des mois et des jours
Récupérer le dernier jour du mois précédent.
Code : Tout sélectionner
SELECT "maDate", TO_CHAR( CAST( YEAR( "maDate" ) || '-' || MONTH( "maDate" ) || '-' || DAY( "maDate" ) - DAY( "maDate" ) AS "DATE" ), 'DD/MM/YYYY' ) AS "DernierJourMoisPrecedent" FROM "tDates"
Récupérer le dernier jour du mois
Code : Tout sélectionner
SELECT "maDate", TO_CHAR( CAST( YEAR( "maDate" ) || '-' || MONTH( "maDate" ) + 1 || '-' || 0 AS "DATE" ), 'DD/MM/YY' ) AS "DernierJourduMois" FROM "tDates"
Deux façons de récupérer le nombre de jours du mois, soit par calcul avec DATEDIFF, soit en récupérant la valeur DAY du dernier jour du mois.
Code : Tout sélectionner
SELECT "maDate", DATEDIFF( 'dd', "maDate", CAST( YEAR( "maDate" ) || '-' || MONTH( "maDate" ) + 1 || '-' || DAY( "maDate" ) AS DATE ) ) AS "JoursdansMois1", DAY( CAST( YEAR( "maDate" ) || '-' || MONTH( "maDate" ) + 1 || '-' || 0 AS "DATE" ) ) AS "JoursdansMois2" FROM "tDates"
Une petite dernière, déterminer si une année est bissextile ou pas.
Code : Tout sélectionner
SELECT "maDateB", YEAR( "maDateB" ) AS "Annee", CASE WHEN MOD( YEAR( "maDateB" ), 4 ) = 0 AND MOD( YEAR( "maDateB" ), 100 ) <> 0 OR MOD( YEAR( "maDateB" ), 400 ) = 0 THEN 'Bissextile' ELSE 'Pas bissextile' END AS "B", CASEWHEN( DAY( CAST( YEAR( "maDateB" ) || '-' || 3 || '-' || 0 AS "DATE" ) ) = 29, 'Vrai', 'Faux' ) AS "Bissextile", TO_CHAR( CAST( YEAR( "maDateB" ) || '-' || 3 || '-' || 0 AS DATE ), 'MONTH DD' ) AS "nbJoursFev", TO_CHAR( CAST( YEAR( "maDateB" ) || '-' || 12 || '-' || 31 AS DATE ), 'DDD' ) AS "nbJoursAnnee" FROM "tAnneesBissextibles"
Le principe devrait pouvoir s'appliquer aux champs Heure, j'essayerais de faire un post dès que j'aurais le temps de tester
A+