Dates et nouvelles Fonctions SQL V2R11 et V2R20

BoTTom |    Changer de couleur
 
                          S Q L / 4 0 0 
 
                 Nouveautés  V2, nouvelles fonctions.
 
 
 Les nouveaux types de variables sont reconnus:
 
     DATE                      dates
 
     TIME                      horaires
 
     TIMESTAMP                 horodatage
 
     VARCHAR(x) ALLOCATE(Y)    zones de longueur variable
 
     en l'absence de "WITH NOT NULL" la valeur nulle est admise
 
 Tout cela ammène de nouvelles fonctions
                  de nouveaux prédiquats
 
 


|    Changer de couleur
 
  rappel sur l'ordre SELECT
 
              SELECT
              -------
 
                 *   toutes les variables de la(des) table(s)
             ou
                 <expression1>, <expression2>,...
 
 
 
             expressions valides: 
 
             + un nom de variable
             + une constante
             + un calcul (+ * - /)
                        (QTE * PU) , (SALBRU * 13) etc ...
 
             + une fonction
                        (redéfinition de variable,moyenne,etc..)
 


|    Changer de couleur
 
              nouveautés : 
 
              MAX(exp)    valeur la plus grande rencontrée (y compris dates)
                           ex: MAX(SALBRU) plus grand salaire
                           ex: MAX(PRXACHAT PRXMOYEN)
                                la plus grande des deux colonnes
              MIN(exp)    valeur la plus petite rencontrée (y compris dates)
                                  idem fonction MAX
              VAR(exp)    variance
                           la formule est VARV(x) = SUM(x**2)/COUNT(x) -
                                                    (SUM(x)/COUNT(x))**2
                            pour 10,12,7 la variance est 4,22
              STDDEV(exp) écart type
                           la formule est STDDEV(x) = SQRT(VAR(X))
                            pour 10,12,7 l'écart type est 2,04
              ZONED(exp)
                                 représentation numérique étendu
                                 d'une expression numérique
 
              ABSVAL(exp)        renvoie la valeur absolue d'une expression
                                  numérique


|    Changer de couleur
 
              SQRT(exp)         renvoie la racine carrée
 
              MOD(exp1 exp2)    renvoie le reste de la division des deux
                                 arguments.
 
              TRANSLATE(exp)    conversion minuscule/MAJUSCULE d'une chaîne
 
              STRIP(exp, BOTH      , [C])
                         LEADING
                         TRAILLING
 
                         supprime le(s) caractère(s) "C" (dft = blanc)
                          à gauche (LEADING), à droite (TRAILLING) ou les
                          deux, de la chaîne indiquée.
 
                         Le résultat est de longueur variable.
 
              VALUE(exp1 exp2 exp...)
 
                         renvoie la première valeur non nulle de la liste
                          des expressions.


|    Changer de couleur
 
                         Intéressant sous la forme (VAR, 'cst')
                          pour attribuer une valeur par défaut ('cst')
                          aux variables pouvant contenir une valeur nulle.
 
              CHAR(date) renvoie la représentation caractère d'une date
                          (suivant DATFMT sur STRSQL ou CRTSQLxxx)
 
              ---------------------
              MANIPULATION DE DATES
              ---------------------
              DATE(expression)
 
                  convertit "expression" au format DATE
 
                  formats admis: TIMESTAMP (extrait la partie DATE)
                                 7 ALPHA   (format julien AAAAJJJ)
                                 ALPHA représentant une date éditée
                                 (AAAA-MM-JJ, par exemple)
                                 numérique représentant (nbr de jours - 1)
                                  depuis le 1er janvier de l'AN 1.
 


|    Changer de couleur
              DAY, MONTH, YEAR
                  renvoient la partie concernée d'une expression date
                   (voir ci dessus + variable de type DATE)
 
              DAYS(expression)
                  renvoie le nombre de jours -1 séparant cette date du
                   1er janvier de l'an 1.
 
 
              MANIPULATION D'HORAIRES
 
              TIME(expression)
 
                  convertit "expression" au format TIME
 
                  formats admis: TIMESTAMP (extrait la partie TIME)
                                 ALPHA représentant une heure éditée
                                 (HH:MM:SS)
 
              HOUR, MINUTE, SECOND
                  renvoient la partie concernée d'une expression TIME
                   (voir ci dessus + variable de type TIME)


|    Changer de couleur
 
              TIMESTAMP(expression)
                  converti "expression" (horodatage édité) en horodatage
 
              TIMESTAMP(date heure)
                  produit l'horodatage correspondant à la date et l'heure
                   indiquées (microsecondes à 0)
 
 
              NOTION DE DUREE:
 
              Durée explicites
 
                  YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS, MICROSECONDS
 
                  servent aux calculs (ARRIVEE + 6 MONTHS + 15 DAYS)
 
                  ainsi que CURRENT DATE, CURRENT TIME et CURRENT TIMEZONE
 
                  (CURRENT TIME ZONE représente le décalage avec GMT
                    ==> CURRENT TIME - CURRENT TIMEZONE = temps universel)
 


|    Changer de couleur
 
 
              durées numériques
 
                  pour une date  = valeur numérique 8,0 aaaaammjj
                  pour une heure = valeur numérique 6,0 hhmmss
                  pour un horodatage = 20,6 (décimales = microsecondes)
 
                  CURRENT DATE + 0615 = aujourd'hui + 6 mois et 15 jours
 
 
              INCREMENTATION, DECREMENTATION, DIFFERENCE
 
              AJOUT (+)
 
                  TOUJOURS Date + durée = date
                           heure + durée = heure
 
                  si le mois est modifié en dépassant 12, il est ajusté et
                   l'année est incrémentée (idem jours, minutes, secondes)
 
 


|    Changer de couleur
 
              RETRAIT (-)
 
                  DATE - durée = DATE : il s'agit d'une décrémentation
 
                  DATE - DATE = durée : il s'agit d'une différence
 
                   la durée est exprimée en durée numérique s'il s'agit
                    d'une colonne résultat.
                   une durée explicite peut être utilisée lors d'un test
                     WHERE (DAT1 - DAT2) > 2 MONTHS
 
           EXEMPLES
 
           + SELECT NOM, (CURRENT DATE - ARRIVEE)
                     FROM SQLDB/PERSONP1
 
           + SELECT NOM, PRENOM, VALUE(FONCTION, '*inconnue')
                     FROM SQLDB/PERSONP1
 
           + SELECT TRANSLATE(ADRESSE) ...
 


|    Changer de couleur
 
   si vos fichiers contiennent des dates numériques 6,0 , l'expression:
 
   date(substr(digits(datnum), 5, 2) !! '/' !!
        substr(digits(datnum), 3, 2) !! '/' !!
        substr(digits(datnum), 1, 2))
 
   est une date valide ,
 
   et peut donc être utilisée dans un test par rapport à CURRENT DATE
    par exemple.
 
  + toutes les commandes de plus de deux mois :
 
   WHERE date(substr(digits(datcde), 5, 2) !! '/' !!
              substr(digits(datcde), 3, 2) !! '/' !!
              substr(digits(datcde), 1, 2)) < current date - 2 MONTHS
 
  est valide.




©AF400