Support du traducteur SQL pour les champs de date, d'heure et d'estampille temporelle

Dans cette section :

Référence :

Plusieurs nouveaux types de données ont été définis pour le traducteur SQL pour supporter les champs date-heure dans le prédicat WHERE ou la liste de champs d'une déclaration SELECT.

De plus, les colonnes d'heure et d'estampille-temporelle peuvent être définies dans les sources de données FOCUS relationnelles, et sont accessibles au traducteur. Les valeurs peuvent être saisies à l'aide des déclarations INSERT et UPDATE, et s'affichent dans les déclarations SELECT.

Les éléments d'heure et d'estampille-temporelle (colonnes ou littéraux) se sont comparés dans les conditions. Les valeurs temps et horodatage peuvent être ajoutées ou soustraites les unes aux autres, le résultat étend la différence en nombre de secondes. Les expressions sous forme de T + 2 HEURES ou TS + 5 ANS sont autorisées. Ces expressions sont traduites en appels vers les fonctions date-heure, qui sont décrites dans Utiliser les fonctions .

Tous les formats de date pour les champs réels et virtuels du fichier Master sont convertis au format AAAAMMJJ. Si vous spécifiez un format qui manque un composant quelconque, le traducteur SQL fournit une valeur par défaut pour le composant manquant. Pour spécifier une partie d'une date, telle que le mois, utilisez un champ virtuel au format alphanumérique.


Haut de page

x
Référence : Support du traducteur SQL pour les champs de date, d'heure et d'estampille temporelle

Dans le diagramme ci-après, fff représente la seconde à trois décimales (milisecondes) et ffffff représente la seconde à six décimales (microsecondes).

Les formats suivants sont autorisés comme données d'entrée au traducteur :

Format

Attribut USAGE dans le fichier maître

Composants de date

Date

YYMD
YYYY-MM-DD

Heure

HH
HH

Heure à minute

HHI
HH.MM

Heure à seconde

HHIS
HH.MM.SS

Heure à miliseconde

HHISs
HH.MM.SS.fff

Heure à microseconde

HHISsm
HH.MM.SS.ffffff

Année à heure

HYYMDH
YYYY-MM-DD HH

Année à

HYYMDI
YYYY-MM-DD HH.MM

Année à seconde

HYYMDS
YYYY-MM-DD HH.MM.SS

Année à miliseconde

HYYMDs
YYYY-MM-DD HH.MM.SS.fff

Année à microseconde

HYYMDm
YYYY-MM-DD
HH.MM.SS.ffffff

Remarque :



x
Extraction de composants date-heure avec le traducteur SQL

Comment :

Le traducteur SQL supporte plusieurs fonctions qui renvoient des composants des valeurs date-heure. La déclaration EXTRACT s'emploie pour extraire des composants.

La fonction TRIM s'emploie pour enlever des formes de gauche et/ou de droite des valeurs de date, d'heure et d'estampille-temporelle. Consultez le manuel Utiliser les fonctions .



x
Syntaxe : Utiliser les fonctions de date, d'heure et d'estampille temporelle acceptées par le traducteur SQL

Les fonctions suivantes renvoient les composants date-heure sous forme de valeurs de nombre entier. Supposons que x est une valeur date-heure :

Fonction

Valeur renvoyée

YEAR(x)

année

MONTH(x)

numéro du mois

DAY(x)

numéro du jour

HOUR(x)

heure

MINUTE(x)

minute

SECOND(x)

seconde

MILLISECOND(x)

miliseconde

MICROSECOND(x)

microseconde



Exemple : Utilisation des fonctions de date, d'heure et d'estampille temporelle du traducteur SQL

Utilisation de la colonne d'estampille-temporelle TS dont la valeur est '1999-11-23 07:32:16.123456' :

YEAR(TS) = 1999
MONTH(TS) = 11
DAY(TS) = 23
HOUR(TS) = 7
MINUTE(TS) = 32
SECOND(TS) = 16
MILLISECOND(TS) = 123
MICROSECOND(TS) = 123456


Exemple : Utilisation des fonctions de date, d'heure et d'estampille temporelle du traducteur SQL dans une déclaration SELECT

Supposons qu'une source de données FOCUS appelée VIDEOTR2 contient un champ date-heure appelé TRANSDATE.

SQL
SELECT TRANSDATE,
YEAR(TRANSDATE), MONTH(TRANSDATE),
MINUTE(TRANSDATE)
FROM VIDEOTR2;
FILE VIDSQL 
END

Le traducteur SQL produit les champs virtuels suivants pour les fonctions, suivis d'une requête TABLE pour afficher la sortie :

SET COUNTWIDTH=ON                                                        
-SET SQLERRNUM = 0;                                                      
DEFINE FILE                                                              
VIDEOTR2 TEMP                                                            
SQLDEF01/I4 MISSING ON NEEDS ALL = HPART(TRANSDATE,'YEAR','I4');         
SQLDEF02/I2 MISSING ON NEEDS ALL = HPART(TRANSDATE,'MONTH','I2');        
SQLDEF03/I2 MISSING ON NEEDS ALL = HPART(TRANSDATE,'MINUTE','I2');       
END                                                                      
TABLEF FILE VIDEOTR2                                                     
PRINT TRANSDATE SQLDEF01 AS 'SQLDEF01' SQLDEF02 AS 'SQLDEF02' SQLDEF03 AS
  'SQLDEF03'                                                             
ON TABLE SET CARTESIAN ON                                                
ON TABLE SET ASNAMES ON                                                  
ON TABLE SET HOLDLIST PRINTONLY 
END                                         

La sortie est :

TRANSDATE         SQLDEF02  SQLDEF04  SQLDEF05
1999/06/20 04:14      1999         6        14
1991/06/27 02:45      1991         6        45
1996/06/21 01:16      1996         6        16
1991/06/21 07:11      1991         6        11
1991/06/20 05:15      1991         6        15
1999/06/26 12:34      1999         6        34
1919/06/26 05:45      1919         6        45
1991/06/21 01:10      1991         6        10
1991/06/19 07:18      1991         6        18
1991/06/19 04:11      1991         6        11
1998/10/03 02:41      1998        10        41
1991/06/25 01:19      1991         6        19
1986/02/05 03:30      1986         2        30
1991/06/24 04:43      1991         6        43
1991/06/24 02:08      1991         6         8
1999/10/06 02:51      1999        10        51
1991/06/25 01:17      1991         6        17


x
Syntaxe : Utiliser la fonction EXTRACT du traducteur SQL pour extraire des composants date-heure

Utilisez la fonction ANSI standard suivante pour extraire des composants date-heure sous forme de valeurs de nombre entier :

EXTRACT(component FROM value)

où :

component

est l'un des composants suivants : YEAR, MONTH, QUARTER, DAY, WEEKDAY, HOUR, MINUTE, SECOND, MILLISECOND, ou MICROSECOND.

value

Est un champ, une constante ou une expression date-heure DATE, TIME ou TIMESTAMP.

Par exemple, les choses suivantes sont équivalentes.

EXTRACT(YEAR FROM TS)
YEAR(TS)


Exemple : Utilisation de la fonctionEXTRACT
SELECT D. EXTRACT(YEAR FROM D), EXTRACT(MONTH FROM D),
EXTRACT(DAY FROM D) FROM T

Cette requête produit des lignes semblables à celles qui suivent :

1999-01-01     1999      1       1
2000-03-03     2000      3       3

WebFOCUS