TIMESTAMP_FORMAT funzione scalare
La funzione TIMESTAMP_FORMAT restituisce una data / ora che si basa sull'interpretazione della stringa di input utilizzando il formato specificato.
Lo schema è SYSIBM.
- stringa - espressione
- L'espressione deve restituire un valore che è un tipo di dati di tipo CHAR o VARCHAR integrato. In un database Unicode, se un argomento fornito è un tipo di dati GRAPHIC o VARGRAPHIC, viene prima convertito in VARCHAR prima di valutare la funzione. La stringa - espressione deve contenere i componenti di una data / ora che corrispondono al formato specificato da formato - stringa. formato - stringa
- L'espressione deve restituire un valore che è un tipo di dati di tipo CHAR o VARCHAR integrato. In un database Unicode, se un argomento fornito è un tipo di dati GRAPHIC o VARGRAPHIC, viene prima convertito in VARCHAR prima di valutare la funzione. La lunghezza effettiva non deve essere maggiore di 255 bytes (SQLSTATE 22007). Il valore è un modello per come stringa - espressione viene interpretato e quindi convertito in un valore di registrazione data / ora.Un formato - stringa valido deve contenere almeno un elemento di formato, non deve contenere più specifiche per qualsiasi componente di una data / ora, e può contenere qualsiasi combinazione degli elementi di formato, salvo diversa indicazione in Tabella 1 (SQLSTATE 22007). Ad esempio, formato - stringa non può contenere sia YY che YYYY, perché entrambi sono utilizzati per interpretare il componente anno di stringa - espressione. Fare riferimento alla tabella per determinare quali elementi di formato non possono essere specificati insieme. Due elementi di formato possono facoltativamente essere separati da uno o più dei seguenti caratteri separatori:
- Segno meno (-)
- period (.)
- barra (/)
- Virgola (,)
- apostrofo (')
- semicolon (;)
- due punti (:)
- bianco ()
Tabella 1. Elementi di formato per la funzione TIMESTAMP_FORMAT Elemento di formato Componenti correlati di una registrazione data / ora Descrizione AM o PM ora Indicatore meridiano (mattino o sera) senza periodi. Questo elemento di formato dipende da nome - locale, se specificato. In caso contrario, dipende dal valore del registro speciale CURRENT LOCALE LC_TIME. A.M. o P.M. ora Indicatore meridiano (mattino o sera) con periodi. Questo elemento di formato utilizza le stringhe esatte A.M.
oP.M.
ed è indipendente dal nome della locale in vigore.DAY, Giorno o giorno Nessuna Nome del giorno in formato uppercase, titlecase o in minuscolo. La lingua utilizzata dipende da nome - locale, se specificato; altrimenti, dipende dal valore del registro speciale CURRENT LOCALE LC_TIME. DY, Dy o dy Nessuna Nome abbreviato del giorno in formato uppercase, titlecase o in minuscolo. La lingua utilizzata dipende da nome - locale, se specificato; altrimenti, dipende dal valore del registro speciale CURRENT LOCALE LC_TIME. D Nessuna Giorno della settimana (1-7). Il primo giorno della settimana dipende da locale - nome, se specificato; in caso contrario, dipende dal valore del registro speciale CURRENT LOCALE LC_TIME. DD giorno Giorno del mese (01-31). DDD mese, giorno Giorno dell'anno (001-366). FF o FFn frazionali secondi Secondi frazionali (0-999999999999). Il numero n viene utilizzato per specificare il numero di cifre previsto nella stringa - espressione. I valori validi per n sono 1 - 12 senza zeri iniziali. Specificando FF equivale a specificare FF6. Quando il componente in stringa - espressione corrispondente all'elemento formato FF è seguito da un carattere separatore o è l'ultimo componente, il numero di cifre per i secondi frazionali può essere inferiore a quanto specificato dall'elemento formato. In questo caso zero cifre vengono imbottiti sulla destra delle cifre specificate. HH ora HH si comporta come HH12. HH12 ora Ore del giorno (01-12) in formato 12 ore. AM è l'indicatore di meridiano predefinito. HH24 ora Ore del giorno (00-24) in formato 24 ore. J anno, mese e giorno Giuliano giorno (numero di giorni dal 1 gennaio, 4713 a.C.). SN minuto Minuto (00-59). MM mese Mese (01-12). MONTH, Mese o mese mese Nome del mese in formato uppercase, titlecase o in minuscolo. La lingua utilizzata dipende da nome - locale, se specificato; altrimenti, dipende dal valore del registro speciale CURRENT LOCALE LC_TIME. MON, Mon o mon mese Nome abbreviato del mese in formato uppercase, titlecase o in minuscolo. La lingua utilizzata dipende da nome - locale, se specificato; altrimenti, dipende dal valore del registro speciale CURRENT LOCALE LC_TIME. NNNNNN microsecondi Microsecondi (000000-999999). Uguale a FF6. RR anno Ultime due cifre dell'anno rettificato (00-99). RRRR anno Anno rettificato a 4 cifre (0000-9999). SS secondi Secondi (00-59). SSSSS ore, minuti e secondi Secondi dalla mezzanotte precedente (00000-86400). Y anno Ultima cifra dell'anno (0-9). Le prime tre cifre dell'anno in corso sono utilizzate per determinare l'intero anno a 4 cifre. AA anno Ultime due cifre dell'anno (00-99). Le prime due cifre dell'anno in corso sono utilizzate per determinare l'intero anno a 4 cifre. yyy anno Ultime tre cifre dell'anno (000-999). La prima cifra dell'anno in corso viene utilizzata per determinare l'intero anno a 4 cifre. YYYY anno Anno a 4 cifre (0000-9999). Nota: Gli elementi di formato in Tabella 1 non sono sensibili al caso, tranne che per quanto segue:- mattina, pomeriggio
- A.M., P.M.
- DAY, Giorno, giorno
- DY, Dy, dy
- D
- MONTH, Mese, mese
- MON, Lun, lun
Gli elementi di formato DAY, Day, day, DY, Dy, dy e D non contribuiscono ad alcun componente della data / ora risultante. Tuttavia, un valore specificato per qualsiasi di questi elementi di formato deve essere corretto per la combinazione dei componenti anno, mese e giorno della data / ora risultante (SQLSTATE 22007). Ad esempio, ipotizzando un valore 'en_US' viene utilizzato per nome - locale, un valore del 'lunedì 2008-10-06' per stringa - espressione è valido per un valore di 'Giorno YYYY - MM - DD '. Tuttavia, il valore del 'martedì 2008-10-06' per stringa - espressione risulterebbe in errore per lo stesso formato - stringa.
Gli elementi in formato RR e RRRR possono essere utilizzati per alterare come una specifica per un anno va interpretata regolando il valore per produrre un valore di 2 cifre o un valore di 4 cifre a seconda delle due cifre di sinistra dell'anno in corso secondo la seguente tabella.
Ad esempio, se l'anno in corso è 2007, '86' con formato 'RR' significa 1986, ma se l'anno corrente è di 2052, significa 2086.Ultime due cifre dell'anno in corso Anno a due cifre in stringa - espressione Prime due cifre del componente anno della registrazione data / ora 00 - 50 00 - 49 Prime due cifre dell'anno in corso 51-99 00-49 Prime due cifre dell'anno corrente + 1 00-50 50-99 Prime due cifre dell'anno corrente - 1 51-99 50-99 Prime due cifre dell'anno in corso I seguenti default vengono utilizzati quando un formato - stringa non include un elemento formato per uno dei seguenti componenti di una registrazione data / ora:
Gli zeri iniziali possono essere specificati per qualsiasi componente del valore della registrazione data / ora (cioè mese, giorno, ora, minuti, secondi) che non ha il numero massimo di cifre significative per l'elemento formato corrispondente nella formato - stringa.Componente di registrazione Predefinito anno anno corrente, come 4 cifre mese mese corrente, come 2 cifre giorno 01 (primo giorno del mese) ora 00 minuto 00 secondo 00 secondi frazionali un numero di zeri corrispondenti alla precisione della data / ora del risultato Una sottostringa della stringa - espressione che rappresenta un componente di una data / ora (ad esempio anno, mese, giorno, ora, minuti, secondi) può includere meno del numero massimo di cifre per quel componente della registrazione data / ora indicata dall'elemento di formato corrispondente. Qualsiasi cifra mancante predefinita a zero. Ad esempio, con un formato - stringa di 'YYYY - MM - DD HH24:MI:SS', un valore di input di' 999-3-9 5:7:2 'produrrebbe lo stesso risultato del' 0999-03-09 05:07:02 '.
Se formato - stringa non è specificato, stringa - espressione verrà interpretato utilizzando un formato predefinito in base al valore del registro speciale CURRENT LOCALE LC_TIME.
precisione - costante - Una costante intera che specifica la precisione della registrazione data / ora del risultato. Il valore deve essere compreso nell'intervallo da 0 a 12. Se non specificato, la precisione di precisione viene impostata per default su 6. nome locale
- Una costante di carattere che specifica il locale utilizzato per i seguenti elementi di formato:
- mattina, pomeriggio
- DAY, Giorno, giorno
- DY, Dy, dy
- D
- MONTH, Mese, mese
- MON, Lun, lun
Per informazioni sulle localine valide e la loro denominazione, consultare
Locali nomi per SQL e XQuery
.Se nome locale non è specificato, viene utilizzato il valore del registro speciale CURRENT LOCALE LC_TIME.
Il risultato della funzione è un TIMESTAMP con una precisione basata su precisione - costante. Se uno dei primi due argomenti può essere nullo, il risultato può essere nullo; se uno dei primi due argomenti è nullo, il risultato è il valore nullo.
Note
- Calendario Giuliano e Gregoriano: La transizione dal calendario giuliano al calendario gregoriano il 15 ottobre 1582 è presa in considerazione da questa funzione.
- Determinismo: TIMESTAMP_FORMAT è una funzione deterministica. Tuttavia, i seguenti richiami della funzione dipendono dal valore del registro speciale CURRENT LOCALE LC_TIME o CURRENT TIMESTAMP.
- Quando formato - stringa non viene specificato esplicitamente, o quando nome - locale non viene specificato esplicitamente e uno dei seguenti è vero:
- formato - stringa non è una costante
- formato - stringa è una costante e include elementi di formato che sono sensibili al locale
- formato - stringa è una costante e non include un elemento di formato che definisce completamente l'anno (cioè J o YYYY) e quindi utilizza il valore dell'anno corrente
- formato - stringa è una costante e non include un elemento di formato che definisce completamente il mese (ad esempio J, MM, MONTH o MON) e quindi utilizza il valore del mese corrente
- Quando formato - stringa non viene specificato esplicitamente, o quando nome - locale non viene specificato esplicitamente e uno dei seguenti è vero:
- Le alternative di sintassi: TO_DATE è un sinonimo di TIMESTAMP_FORMAT. TO_TIMESTAMP è una funzione simile e l'unica differenza è che il valore predefinito per precisione - costante è di 12.
Esempi
- Esempio 1: Inserire una riga nella tabella IN_TRAY con una data / ora di ricezione uguale a una seconda prima dell'inizio dell'anno 2000 (31 dicembre 1999 ore 23:59:59).
INSERT INTO IN_TRAY (RECEIVED) VALUES (TIMESTAMP_FORMAT('1999-12-31 23:59:59', 'YYYY-MM-DD HH24:MI:SS')) - Esempio 2: un'applicazione riceve stringhe di informazioni date in una variabile chiamata INDATEVAR. Questo valore non è strettamente formattato e potrebbe includere due o quattro cifre per anni, e una o due cifre per mesi e giorni. I componenti della data potrebbero essere separati con i caratteri minus segno (-) o barra (/) e sono previsti in ordine di giorno, mese e anno. Le informazioni sul tempo sono costituite da ore (in formato 24 ore) e minuti, e di solito sono separate da un colon. I valori di esempio includono "1 5 / 1 2 / 98 13.48" e "3.9.2004 8.02". Inserire tali valori nella tabella IN_TRAY.
L'utilizzo di RRRR nel formato consente valori anno di 2 e 4 cifre e assegna le prime due cifre in base all'anno in corso. Se si usasse YYYY, i valori di input con un anno a 2 cifre avrebbero comportato zeri. Il separatore barra consente anche il carattere meno segno . Ipotizzando un anno in corso di 2007, i timbri derivanti dai valori di esempio sono:INSERT INTO IN_TRAY (RECEIVED) VALUES (TIMESTAMP_FORMAT(:INDATEVAR, 'DD/MM/RRRR HH24:MI'))'15/12/98 13:48' --> 1998-12-15-13.48.00.000000 '9-3-2004 8:02' --> 2004-03-09-08.02.00.000000
