Dans cette section : |
Les fonctions décrites dans cette section fonctionnent sur des champs au format date-heure (parfois nommé format H).
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.
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é.
SET DATEFORMAT = option
où :
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.
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
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.
SET WEEKFIRST = value
où :
Peut être compris entre :
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.
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.
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.
Ce qui suit définit Dimanche comme début de la semaine, utilisant une numérotation de semaine non standard.
SET WEEKFIRST = 1
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é.
SET DTSTRICT = {ON|OFF}
où :
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).
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.
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.
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 |
|
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 :
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é.
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.
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 |
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.
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
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.
La date suivante est au format Chaîne traduite
January 6 2000
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.
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
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é.
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.
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ù :
est la chaîne de temps en format acceptable. Une valeur d'heure peut contenir un espace immédiatement avant un indicateur am/pm.
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.
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);
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
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
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 |