In questa sezione: |
Le funzioni descritte in questa sezione operano su campi nel formato data-ora (delle volte chiamato formato H).
In questa sezione: |
Il parametro DATEFORMAT specifica l'ordine dei componenti data per alcuni tipi di valori data-ora. Il parametro WEEKFIRST specifica il primo giorno della settimana. Il parametro DTSTRICT determina l'estensione a cui i valori data-ora sono controllati per la validità.
Il parametro DATEFORMAT specifica l'ordine dei componenti della data (mese/giorno/anno), quando i valori di data e ora vengono immessi nei formati di stringa formattata e tradotta, descritti in Uso formati data-ora. Questo parametro trasforma il formato di immissione in un valore indipendente dal formato della variabile a cui è stato assegnato.
SET DATEFORMAT = option
dove:
In grado di usare uno dei seguenti: MDY, DMY, YMD o MYD. MDY è il valore predefinito per il formato inglese U.S.
La seguente richiesta usa un valore letterale data naturale con componenti mese e giorno numerici ambigui (APR 04 05) come immissione alla funzione 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
Con DATEFORMAT impostato su MYD, il valore è stato interpretato come 5 Aprile 1904:
DTFLDYYMD --------- 1904-04-05 00:00
Il parametro WEEKFIRST specifica un giorno della settimana come inizio della settimana. Questo parametro si usa in computazioni settimana per funzioni HADD, HDIFF, HNAME, HPART e HYYWD. È inoltre in uso da parte di funzioni DTADD, DTDIFF, DTRUNC e DTPART. I valori predefiniti sono diversi per queste funzioni, come descritto in Come impostare un giorno come inizio della settimana. Il parametro WEEKFIRST non modifica il giorno del mese che corrisponde a ciascun giorno della settimana, ma specifica solo quale giorno viene considerato all'inizio della settimana.
Le subroutine HPART, DTPART, HYYWD e HNAME possono estrarre un numero della settimana da un valore data-ora. Per determinare il numero della settimana, è possibile usare diverse definizioni. Per esempio, la numerazione settimanale standard ISO 8601 definisce la prima settimana dell'anno come prima settimana di gennaio con quattro o più giorni. Qualsiasi giorno precedente a Gennaio appartiene alla settimana 52 o 53 dell'anno precedente. Lo stardard ISO inoltre stabilizza Lunedì come primo giorno della settimana.
Si specifica quale tipo di numerazione settimanale usare, impostando il parametro WEEKFIRST, come descritto in Come impostare un giorno come inizio della settimana.
Poiché il numero della settimana restituito dalle funzioni HNAME e DTPART può essere nell'anno corrente o nell'anno precedente o seguente, il solo numero della settimana potrebbe non essere utile. La funzione HYYWD restituisce sia l'anno che la settimana da un dato valore data-ora.
SET WEEKFIRST = value
dove:
È in grado di essere:
La numerazione settimanale, con uso di questi valori, stabilizza la prima settimana di gennaio con sette giorni, come numero settimana 1. I giorni precedenti al mese di gennaio appartengono all'ultima settimana dell'anno precedente. Tutte le settimane hanno sette giorni.
Nota: ISO è un sinonimo per ISO2.
La numerazione settimanale, con uso di questi valori, stabilizza la prima settimana di gennaio con almeno quattro giorni, come numero settimana 1. I giorni precedenti al mese di gennaio appartengono all'ultima settimana dell'anno precedente. Tutte le settimane hanno sette giorni.
Nota: STD sena una cifra equivale a STD1.
La numerazione settimanale, con uso di questi valore, risulta come segue. La numerazione settimanale 1 inizia il 1 gennaio e finisce nel giorno precedente al primo giorno della settimana. Per esempio, per STD1, la prima settimana termina nel primo Sabato dell'anno. La prima e l'ultima settimana potrebbero avere meno di sette giorni.
Il seguente designa Domenica come l'inizio della settimana, usando la numerazione settimanale non standard:
SET WEEKFIRST = 1
? SET WEEKFIRST
Questa azione restituisce il valore che indica l'algoritmo della numerazione settimanale e il primo giorno della settimana. Per esempio, il valore intero 1 restituisce Domenica con la nmerazione settimanale non standard.
L'elaborazione rigorosa controlla i valori data-ora, quando emessi da un utente finale, letti da un file di transazione, visualizzati o restituiti da una subroutine, per assicurare che rappresentino una data e un'ora validi. Per esempio, un mese numerico deve essere tra 1 e 12 e il giorno deve essere all'interno del numero di giorni per il mese specifico.
SET DTSTRICT = {ON|OFF}
dove:
Richiama il processo rigoroso. ON - È il valore predefinito.
L'elaborazione rigorosa controlla i valori data-ora, quando emessi da un utente finale, letti da un file di transazione, visualizzati o restituiti da una subroutine, per assicurare che rappresentino una data e un'ora validi. Per esempio, un mese numerico deve essere tra 1 e 12 e il giorno deve essere all'interno del numero di giorni per il mese specifico.
Se DTSTRICT è ATTIVO e il risultato sarebbe un valore data-ora invalido, la funzione restituisce il valore zero (0).
Non richiama l'elaborazione rigida. I componenti Data-Ora possono avere qualsiasi valore all'interno i vincoli del numero di cifre decimali consentite nel campo. Per esempio, se il campo è un mese a due cifre, il valore è in grado di essere 12 o 99, ma non 115.
Riferimento: |
Le funzioni data-ora possono operare su un componente di un valore data-ora. Questo argomento elenca i nomi e le abbreviazioni dei componenti validi per uso con queste funzioni.
I seguenti nomi di componenti, abbreviazioni valide e valori sono supportati come argomenti per le funzioni data-ora che li richiedono:
Nome componente |
Abbreviazione |
Valori Validi |
---|---|---|
year |
yy |
0001-9999 |
quarter |
|
1-4 |
month |
mm |
1-12 o un nome mese, a seconda della funzione. |
day-of-year |
dy |
1-366 |
day or day-of-month |
dd |
1-31 (I due nomi componenti sono equivalenti.) |
week |
wk |
1-53 |
weekday |
dw |
1-7 (domenica-sabato) |
hour |
hh |
0-23 |
minute |
mi |
0-59 |
second |
ss |
0-59 |
millisecond |
ms |
0-999 |
microsecond |
mc |
0-999999 |
nanosecond |
ns |
0-999999999 |
Nota:
In questa sezione: |
Ci sono tre tipi di formati data validi nei valori data-ora: formato stringa numerica, formato stringa formattata e formato stringa tradotta. In ciascun formato, gli anni a due cifre sono interpretati usando i parametri DEFCENT e YRTHRESH.
I componenti ora sono separati da due punti e potrebbero essere anteceduti da A.M., P.M., a.m. o p.m.
Il parametro DATEFORMAT specifica l'ordine dei componenti della data (mese/giorno/anno) quando i valori di data e ora vengono immessi nei formati di stringa formattata e di stringa convertita. Questo parametro rende il formato di immissione di un valore indipendente dal formato della variabile a cui è stato assegnato.
Il formato stringa numerica è esattamente due, quattro, sei o otto cifre. Le stringhe a quattro cifre sono considerate come un anno (il secolo deve essere specificato) e il mese e il giorno sono impostati sul 1 Gennaio. Le stringhe a sei e otto cifre contengono due o quattro cifre per l'anno, seguite da due per il mese e due per il giorno. Poiché l'ordine di componente è fisso per questo formato, l'impostazione DATEFORMAT viene ignorata.
Se si incontra un formato stringa numerica più lunga di otto cifre, questo è trattato come una stringa data-ora combinata nel formato Hnn.
I seguenti sono esempi di costanti data stringa numerica:
Stringa |
Data |
---|---|
99 |
1 Gennaio, 1999 |
1999 |
1 Gennaio, 1999 |
19990201 |
1 Febbraio, 1999 |
Il formato stringa formattata contiene un giorno a una o due cifre, un mese a una o due cifre e un anno a due o quattro cifre, ciascun componente separato da uno spazio, sbarra, trattino o punto. Tutti e tre i componenti devono essere presenti e seguire l'impostazione DATEFORMAT. Se uno qualunque dei tre campi presenta quattro cifre, questo viene interpretato come l'anno e gli altri due campi devono seguire l'ordine dato dall'impostazione DATEFORMAT.
I seguenti sono esempi delle costanti data stringa numerica e specificano 20 Maggio, 1999:
1999/05/20 5 20 1999 99.05.20 1999-05-20
Il formato stringa tradotta contiene il nome mese abbreviato o completo. L'anno deve inoltre essere presente nel formato a due o quattro cifre. Se il giorno è mancante, si assume il giorno 1 del mese; se presente, è possibile avere una o due cifre. Se la stringa contiene sia il giorno che l'anno a due cifre, questi elementi devono essere nell'ordine dato dall'impostazione DATEFORMAT.
La seguente data è in nel formato stringa tradotta:
January 6 2000
I componenti ora sono separati da due punti e potrebbero essere anteceduti da A.M., P.M., a.m. o p.m.
È possibile esprimere i secondi con un punto decimale o farli seguire dai due punti. Se sono presenti i due punti dopo i secondi, il valore a seguire rappresenta i millisecondi. Non esiste alcun modo per esprimere i microsecondi o i nanosecondi usando questa annotazione.
Un punto decimale nel valore secondi indica la frazione decimale di un secondo. È possibile rappresentare i microsecondi usando sei cifre decimali. È possibile rappresentare i nanosecondi usando nove cifre decimali.
I seguenti sono esempi dei formati ora accettabili:
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
Con le impostazioni DTSTANDARD di STANDARD e STANDARDU, è possibile leggere i seguenti valori data-ora come immissione:
Inserisci valore |
Descrizione |
---|---|
14:30[:20,99] |
La virgola, e non il punto, separa i componenti ora |
14:30[:20.99]Z |
Ora universale |
15:30[:20,99]+01 15:30[:20,99]+0100 15:30[:20,99]+01:00 |
Ciascuno di questi orari è lo stesso come sopra nell'ora dell'Europa Centrale |
09:30[:20.99]-05 |
Uguale a sopra nel fuso orario orientale standard |
Notare che questi valori sono memorizzati in modo identico, internamente, con l'impostazione STANDARDU. Con l'impostazione STANDARD, tutti gli elementi che seguono Z, +, o - sono ignorati.
Come: |
Un valore data-ora è una costante nel formato carattere assegnato da uno dei seguenti:
Una costante data-ora è in grado di avere spazi vuoti all'inizio o alla fine o immediatamente precedente ad un indicatore am/pm.
In un file carattere
date_string [time_string]
oppure
time_string [date_string]
In una espressione COMPUTE, DEFINE o WHERE
DT(date_string [time_string])
oppure
DT(time_string [date_string])
In una espressione IF
'date_string [time_string]'
oppure
'time_string [date_string]'
dove:
Una stringa ora in formato accettabile. Una stringa ora è in grado di avere uno spazio immediatamente prima dell'indicatore am/pm.
Una stringa data in formato stringa numerica, stringa formattata o stringa tradotta.
In un criterio IF, se il valore non contiene spazi vuoti o caratteri speciali, le virgolette singole non sono necessarie.
Nota: Le stringhe data e ora devono essere separate da almeno uno spazio vuoto. Gli spazi vuoti sono inoltre consentiti all'inizio e alla fine della stringa ora-data.
È possibile usare il prefisso DT in una espressione COMPUTE, DEFINE o WHERE, per assegnare un valore letterale data-ora in un campo data-ora. Per esempio:
DT2/HYYMDS = DT(20051226 05:45); DT3/HYYMDS = DT(2005 DEC 26 05:45); DT4/HYYMDS = DT(December 26 2005 05:45);
Il seguente usa la funzione DT in un comando COMPUTE, per creare un nuovo campo contenente un valore data-ora assegnato.
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
L'emissione è:
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
Il seguente usa la funzione DT per creare un nuovo campo contenente un valore data-ora assegnato. Questo valore viene, quindi, usato in un criterio 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
L'emissione è:
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
Il seguente usa la funzione DT per creare un nuovo campo contenente un valore data-ora assegnato. Questo valore viene, quindi, usato come criterio 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
L'emissione è:
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 |