Utiliser les Fonctions Date-Heure

Dans cette section :

Les fonctions décrites dans cette section fonctionnent sur des champs au format date-heure (parfois nommé format H).


Haut de page

x
Paramètres Date-heure

Dans cette section :

Le paramètre DATEFORMAT spécifie l'ordre des composants de date pour certains types de valeurs date-heure. Le paramètre WEEKFIRST spécifie le premier jour de la semaine. Le paramètre DTSTRICT détermine la portée de vérification de validité des valeurs date-heure.



x
Spécifier l'ordre des composants de date

Le paramètre DATEFORMAT spécifie l'ordre des composant date (jour/mois/année) quand les valeurs date-heure sont saisies au format chaîne traduite et chaîne formatée décrite dans Utiliser les formats Date-Heure. Il rend le format d'entrée d'une valeur indépendant du format de la variable à laquelle il a été affecté.



x
Syntaxe : Spécifier l'ordre des composants de date dans un champ date-heure
SET DATEFORMAT = option							

où :

option

Peut être l'une des valeurs suivantes : MDY, DMY, YMD, ou MYD. MDY est la valeur par défaut pour le format Anglais E.U.



Exemple : Utiliser le paramètre DATEFORMAT

La requête suivante utilise un littéral de date naturelle avec des composants de jour et mois numériques ambiguës (AVR 04 05) comme entrée vers la fonction de HINPUT :

SET DATEFORMAT = MYD
DEFINE FILE EMPLOYEE
DTFLDYYMD/HYYMDI =  HINPUT(9,'APR 04 05', 8, DTFLDYYMD);
END
TABLE FILE EMPLOYEE
SUM   CURR_SAL NOPRINT DTFLDYYMD
END

Avec DATEFORMAT défini à MYD, la valeur est interprétée comme le 5 Avril, 1904 :

DTFLDYYMD
---------
1904-04-05 00:00


x
Spécifier le premier jour de la semaine pour l'utilisation des fonctions date-heure

Le paramètre WEEKFIRST spécifie un jour de la semaine en tant que premier jour. Il est utilisé pour le calcul sur les semaines par les fonctions HADD, HNAME, HPART, et HYYWD. Il est aussi utilisé par les fonctions DTADD, DTDIFF, DTRUNC, et DTPART. Les valeurs par défaut sont différentes pour ses fonctions, tel que décrit dans Définir un jour comme Début de la semaine. Le paramètre WEEKFIRST ne change pas le jour du mois correspondant à chaque jour de la semaine, il ne spécifie que le jour qui est considéré comme le début de la semaine.

Les sous-programmes HPART, DTPART, HYYWD, et HNAME extraient un numéro de semaine d'une valeur date-heure. Pour déterminer un numéro de semaine, ils peuvent utiliser différentes définitions. Par exemple, le standard ISO 8601 définit la première semaine de l'année en tant que première semaine de janvier avec quatre jours ou plus. Tous les jours précédents au mois de janvier appartiennent aux semaines 52 ou 53 de l'année précédente. La norme ISO spécifie également Lundi comme premier jour de la semaine.

Vous spécifiez quel type de numérotation de semaine doit être utilisé en renseignant le paramètre WEEKFIRST, tel que décrit dans Définir un jour comme Début de la semaine.

Puisque le numéro de semaine renvoyé par les fonctions HNAME, DPART et HPART peut se trouver dans l'année en cours, l'année précédente ou suivante, le numéro de semaine seul ne sera pas utile. La fonction HYYWD renvoie le numéro d'année et de semaine d'une valeur date-heure donnée.



x
Syntaxe : Définir un jour comme Début de la semaine
SET WEEKFIRST = value

où :

value

Peut être compris entre :

  • 1 à 7, représentant le dimanche au samedi avec le numérotage de semaine non standard.

    La numérotation de semaine utilisant ces valeurs établit la première semaine de janvier sur sept jours en tant que semaine numéro 1. les jours précédant le mois de janvier appartiennent à la dernière semaine de l'année précédente. Toutes les semaines sept jours.

  • ISO1 à ISO7, représentant le dimanche au samedi avec le numérotage de semaine ISO standard.

    Remarque : ISO est un synonyme pour ISO2.

    La numérotation de semaine utilisant ces valeurs établit la première semaine de janvier avec au moins quatre jours en tant que semaine numéro 1. les jours précédant le mois de janvier appartiennent à la dernière semaine de l'année précédente. Toutes les semaines sept jours.

  • STD1 juste que STD7, dans lequel chiffre 1 (dimanche) jusqu'à 7 (samedi) indique le jour du début de la semaine.

    Remarque : STD sans chiffre est équivalent à STD1.

    La numérotation de semaine utilisant ces valeurs est comme ce qui suit. La semaine numéro 1 commence le 1er janvier et se termine le jour qui précède le premier jour de la semaine. Par exemple, pour STD1, la première semaine se termine le premier samedi de l'année. La première et la dernière semaine peuvent avoir moins de 7 jours.

  • SIMPLE, qui établit le 1er janvier en tant que début de la semaine 1, le 8 janvier en tant que début de la semaine 2, et ainsi de suite. Le premier jour de la semaine est par conséquent le même que le premier jour de l'année. La dernière semaine (semaine 53) à une longueur de un ou deux jours.
  • 0 (zéro) est la valeur du paramètre WEEKFIRST avant que l'utilisateur ne transmette un paramètre WEEKFIRST explicite. Les fonctions date-heure HPART, HNAME, HYYWD, HADD, et HDIFF utilise samedi en tant que début de semaine, lorsque le paramètre WEEKFIRST est 0. Les fonctions simplifiées DTADD, DTDIFF, DTRUNC, et DTPART, ainsi que l'impression d'date tronquées en semaines, et la reconnaissance des chaînes constantes de date qui contiennent les numéros de semaine, utilise dimanche en tant que valeur par défaut, lorsque le paramètre WEEKFIRST est 0. Si l'utilisateur renseigne explicitement WEEKFIRST avec une autre valeur, cette valeur est utilisée par toutes les fonctions.


Exemple : Définir Dimanche comme Début de la semaine

Ce qui suit définit Dimanche comme début de la semaine, utilisant une numérotation de semaine non standard.

SET WEEKFIRST = 1


x
Syntaxe : Afficher le paramètre actuel de WEEKFIRST
? SET WEEKFIRST

Ceci renvoie la valeur qui indique l'algorithme de numérotation de semaine et le premier jour de la semaine. Par exemple, l'entier 1 représente dimanche avec une numérotation de semaine non standard.



x
Contrôler le traitement des valeurs Date-heure

Le traitement strict vérifie les valeurs date-heure quand elles sont soumises en entrée par un utilisateur final, lues à partir d'un fichier transactionnel, affichées, ou renvoyées par une sous-routine pour s'assurer qu'elle représente une date et heure valide. Par exemple, un mois numérique doit être entre 1 et 12, et le jour doit être un nombre de jours au sein du mois spécifié.



x
Syntaxe : Activer le traitement stricte des valeurs Date-heure
SET DTSTRICT = {ON|OFF}

où :

ON

Invoque un traitement strict. ON est la valeur par défaut.

Le traitement strict vérifie les valeurs date-heure quand elles sont soumises en entrée par un utilisateur final, lues à partir d'un fichier transactionnel, affichées, ou renvoyées par une sous-routine pour s'assurer qu'elle représente une date et heure valide. Par exemple, un mois numérique doit être entre 1 et 12, et le jour doit être un nombre de jours au sein du mois spécifié.

Si DTSTRICT est ON et le résultat serait une valeur date-heure non valide, la fonction retourne la valeur zéro (0).

OFF

N'invoque pas un traitement strict. Les composants date-heure peuvent avoir n'importe quelle valeur au sein de la contrainte du nombre de chiffres décimaux permis dans le champ. Par exemple, si le champ et un mois à deux chiffres, la valeur peut être 12 ou 99, mais pas 115.


Haut de page

x
Fournir les arguments pour les fonctions Date-heure

Référence :

Les fonctions date-heure peuvent fonctionner sur un composant d'une valeur date-heure. Cette rubrique répertorie les noms et abréviations des composants valables pour l'utilisation de ces fonctions.



x
Référence : Arguments pour l'utilisation avec les Fonctions Date et Heure.

Les noms suivants de composants, les abréviations valides, et les valeurs sont prises en charge comme arguments pour les fonctions de date-heure qui en ont besoin :

Nom du composant

Abréviation

Valeurs possibles :

year
yy

0001-9999

quarter
qq

1-4

month
mm

1-12 ou un nom de mois, selon la fonction.

day-of-year
dy

1-366

												day or day-of-month 											
dd

1-31 (les deux noms de composants sont équivalents.)

week
wk

1-53

weekday
dw

1-7 (Dimanche-Samedi)

hour
hh

0-23

minute
mi

0-59

second
ss

0-59

millisecond
ms

0-999

microsecond
mc

0-999999

nanosecond
ns

0-999999999

Remarque :

  • Pour un argument qui spécifie une longueur de huit, dix ou 12 caractères, utilisez huit pour inclure les millisecondes, dix pour inclure les microsecondes, et 12 pour inclure les nanosecondes dans la valeur renvoyée.
  • Le dernier argument est toujours un format d'utilisation (USAGE) qui indique le type de données retourné par la fonction. Le type peut être A (alphanumérique), I (entier), D (à virgule flottante double précision), H (date-heure), ou un format de date (par exemple, YYMD).



x
Utiliser les formats Date-Heure

Dans cette section :

Il existe trois types de formats de date qui sont valides dans les valeurs date-heure: format de chaîne numérique, le format chaîne formatée, et le format chaîne traduite. à chaque format, les années à deux chiffres sont interprétées en utilisant les définitions []DEFCENT et []YRTHRESH.

Les composants de temps sont séparés par des virgules et peuvent être suivis par AM, PM, a.m, ou p.m.

Le paramètre DATEFORMAT spécifie l'ordre des composant date (jour/mois/année) quand les valeurs date-heure sont saisies au format chaîne traduite et chaîne formatée. Il rend le format d'entrée d'une valeur indépendant du format de la variable à laquelle il a été affecté.



x
Format de chaîne numérique

Format chaîne numérique est exactement quatre, six ou huit chiffres. Les chaînes à quatre chiffres sont considérées comme une année (le siècle doit être précisé) ; le mois et le jour sont fixés au premier janvier. Les chaînes à six et à huit chiffres se composent de deux ou quatre chiffres représentant l'année, suivis de deux chiffres représentant le mois, suivis de deux chiffres représentant le jour. Parce que l'ordre du composant est fixé avec ce format, le paramètre DATEFORMAT est ignoré.

Si un format chaîne numérique comptant plus de huit chiffres est rencontré, il est traité comme une chaîne combinée date-heure au format Hn.



Exemple : Utiliser le format de chaîne numérique

Voici des exemples de constantes de dates de chaînes numériques :

Chaîne

Date

99

Janvier 1, 1999

1999

Janvier 1, 1999

19990201

Février 1, 1999



x
Format Chaîne formatée

Le format chaîne formatée contient un jour à un ou deux chiffres, un mois, à un ou deux chiffres, et une année à deux ou quatre chiffres, chaque composant est séparé par un espace, une barre oblique, un trait d'union, ou un point. Les trois composants doivent être présents et correspondre au paramètre DATEFORMAT. Si aucun des trois champs est à quatre chiffres, il est interprété comme l'année, et les deux autres champs doivent suivre l'ordre indiqué par la définition DATEFORMAT.



Exemple : Utiliser le format Chaîne formatée

Voici des exemples de constantes de dates de chaînes formatées et spécifient le 20 Mai 1999 :

1999/05/20
5 20 1999
99.05.20
1999-05-20


x
Format Chaîne traduite

Format de chaîne traduite se compose du nom du mois entier ou abrégé. L'année doit aussi être présente sous forme de deux ou quatre chiffres. S'il manque le jour, le premier jour du mois est la valeur par défaut ; si le jour est présent, il peut se composer d'un ou de deux chiffres. Si la chaîne comprend une année à deux chiffres et un jour à deux chiffres, ils doivent être dans l'ordre défini par DATEFORMAT.



Exemple : Utiliser le format Chaîne traduite

La date suivante est au format Chaîne traduite

January 6 2000


x
Format de l'heure

Les composants de temps sont séparés par des virgules et peuvent être suivis par AM, PM, a.m, ou p.m.

Notez que la seconde peut comporter une virgule ou peut être suivi d'un deux-points : S'il y a deux points après les secondes, la valeur qui suit représente les milisecondes. Il n'est pas possible d'exprimer la microseconde ou la nanoseconde avec cette notation.

Une virgule dans la deuxième valeur indique la fraction décimale d'une seconde. Une microseconde est exprimée par six chiffres décimaux. Une nanoseconde est exprimée par neuf chiffres décimaux.



Exemple : Utiliser les formats Heure

Voici des exemples de formats de temps acceptables :

14:30:20:99       (99 milliseconds)
14:30
14:30:20.99       (99/100 seconds)
14:30:20.999999   (999999 microseconds)
02:30:20:500pm


Exemple : Spécification de valeurs d'entrée date-heure universelles

Lorsqu'elles sont utilisées avec STANDARD et STANDARDU, qui sont les paramètres DTSTANDARD, les valeurs date-heure suivantes peuvent être lues comme des données d'entrée :

Valeur entrée

Description

14:30[:20,99]

Une virgule sépare les composants d'heure au lieu d'un point.

14:30[:20.99]Z

Temps universel

15:30[:20,99]+01
15:30[:20,99]+0100
15:30[:20,99]+01:00 

Ce sont semblables aux formats ci-dessus, à l'heure de l'Europe centrale

09:30[:20.99]-05

Ceci est semblable aux formats ci-dessus, à l'heure de la côte est américaine

Notez que ces valeurs sont stockées de façon identique à l'intérieur avec la définition STANDARDU. En ce qui concerne la définition STANDARD, tout ce qui suit « Z », « + » ou « - » est ignoré.



x
Attribuer des valeurs Date-heure

Comment :

Une valeur date-heure est une constante en format de caractères attribués par un des éléments suivants :

Une constante date-heure peut contenir un espace immédiatement avant un indicateur am/pm.



x
Syntaxe : Affecter des valeurs date-heure

Dans un fichier de caractères

date_string [time_string]

ou

time_string [date_string]

Dans une expression COMPUTE, DEFINE, ou WHERE

DT(date_string [time_string])

ou

DT(time_string [date_string])

Dans une expression IF

'date_string [time_string]'

ou

'time_string [date_string]'

où :

time_string

est la chaîne de temps en format acceptable. Une valeur d'heure peut contenir un espace immédiatement avant un indicateur am/pm.

date_string

est une chaîne de date dans une chaîne numérique, chaîne formatée, ou au format de chaîne traduite.

Dans un critère IF, si la valeur ne contient pas d'espaces ou caractères spéciaux, les guillemets simples ne sont pas nécessaires.

Remarque : les chaînes date-heure doivent être séparées par au moins un blanc. Les blancs sont aussi autorisés au début et à la fin de la chaîne date-heure.



Exemple : Attribuer des littéraux Date-heure

Le préfixe DT peut être utilisé dans une expression COMPUTE, DEFINE, ou WHERE pour attribuer un littéral date-heure à un champ date-heure. Par exemple :

DT2/HYYMDS = DT(20051226 05:45);                                
DT3/HYYMDS = DT(2005 DEC 26 05:45);                              
DT4/HYYMDS = DT(December 26 2005 05:45);   


Exemple : Utiliser une valeur date-heure dans une commande COMPUTE

Ce qui suit utilise la fonction DT dans une commande COMPUTE pour créer un nouveau champ qui contient une valeur date-heure attribuée.

TABLE FILE EMPLOYEE
PRINT LAST_NAME FIRST_NAME AND COMPUTE
NEWSAL/D12.2M = CURR_SAL + (0.1 * CURR_SAL);
RAISETIME/HYYMDIA = DT(20000101 09:00AM);
WHERE CURR_JOBCODE LIKE 'B%'
END

La sortie est :

LAST_NAME     FIRST_NAME           NEWSAL  RAISETIME
---------     ----------           ------  ---------
SMITH         MARY             $14,520.00  2000/01/01  9:00AM
JONES         DIANE            $20,328.00  2000/01/01  9:00AM
ROMANS        ANTHONY          $23,232.00  2000/01/01  9:00AM
MCCOY         JOHN             $20,328.00  2000/01/01  9:00AM
BLACKWOOD     ROSEMARIE        $23,958.00  2000/01/01  9:00AM
MCKNIGHT      ROGER            $17,710.00  2000/01/01  9:00AM


Exemple : Utiliser une valeur date-heure dans des critères WHERE

Ce qui suit utilise la fonction DT pour créer un nouveau champ qui contient une valeur date-heure attribuée. Cette valeur est ensuite utilisée comme critère WHERE.

DEFINE FILE EMPLOYEE
NEWSAL/D12.2M = CURR_SAL + (0.1 * CURR_SAL);
RAISETIME/HYYMDIA = DT(20000101 09:00AM);
END
TABLE FILE EMPLOYEE
PRINT LAST_NAME FIRST_NAME NEWSAL RAISETIME
WHERE RAISETIME EQ DT(20000101 09:00AM)
END

La sortie est :

LAST_NAME     FIRST_NAME           NEWSAL  RAISETIME
---------     ----------           ------  ---------
STEVENS       ALFRED           $12,100.00  2000/01/01  9:00AM
SMITH         MARY             $14,520.00  2000/01/01  9:00AM
JONES         DIANE            $20,328.00  2000/01/01  9:00AM
SMITH         RICHARD          $10,450.00  2000/01/01  9:00AM
BANNING       JOHN             $32,670.00  2000/01/01  9:00AM
IRVING        JOAN             $29,548.20  2000/01/01  9:00AM
ROMANS        ANTHONY          $23,232.00  2000/01/01  9:00AM
MCCOY         JOHN             $20,328.00  2000/01/01  9:00AM
BLACKWOOD     ROSEMARIE        $23,958.00  2000/01/01  9:00AM
MCKNIGHT      ROGER            $17,710.00  2000/01/01  9:00AM
GREENSPAN     MARY              $9,900.00  2000/01/01  9:00AM
CROSS         BARBARA          $29,768.20  2000/01/01  9:00AM


Exemple : Utiliser une valeur date-heure dans des critères IF

Ce qui suit utilise la fonction DT pour créer un nouveau champ qui contient une valeur date-heure attribuée. Cette valeur est ensuite utilisée comme critère IF.

DEFINE FILE EMPLOYEE
NEWSAL/D12.2M = CURR_SAL + (0.1 * CURR_SAL);
RAISETIME/HYYMDIA = DT(20000101 09:00AM);
END
 
TABLE FILE EMPLOYEE
PRINT LAST_NAME FIRST_NAME NEWSAL RAISETIME
IF RAISETIME EQ '20000101 09:00AM'
END

La sortie est :

LAST_NAME     FIRST_NAME           NEWSAL  RAISETIME
---------     ----------           ------  ---------
STEVENS       ALFRED           $12,100.00  2000/01/01  9:00AM
SMITH         MARY             $14,520.00  2000/01/01  9:00AM
JONES         DIANE            $20,328.00  2000/01/01  9:00AM
SMITH         RICHARD          $10,450.00  2000/01/01  9:00AM
BANNING       JOHN             $32,670.00  2000/01/01  9:00AM
IRVING        JOAN             $29,548.20  2000/01/01  9:00AM
ROMANS        ANTHONY          $23,232.00  2000/01/01  9:00AM
MCCOY         JOHN             $20,328.00  2000/01/01  9:00AM
BLACKWOOD     ROSEMARIE        $23,958.00  2000/01/01  9:00AM
MCKNIGHT      ROGER            $17,710.00  2000/01/01  9:00AM
GREENSPAN     MARY              $9,900.00  2000/01/01  9:00AM
CROSS         BARBARA          $29,768.20  2000/01/01  9:00AM

WebFOCUS