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.

Read syntax diagramSkip visual syntax diagramTIMESTAMP_FORMAT(string-expression ,format-string,6,precision-constant,locale-name,locale-name,6,precision-constant )

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 ()
I caratteri separatori possono essere specificati anche all'inizio o alla fine di formato - stringa. Questi caratteri separatori possono essere utilizzati in qualsiasi combinazione nella stringa di formato, ad esempio 'YYYY/MM-DD HH:MM.SS'. I caratteri del separatore specificati in una stringa - espressione vengono utilizzati per separare i componenti e non sono tenuti a corrispondere ai caratteri separatori specificati nella stringa - stringa.
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. o P.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.

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
Ad esempio, se l'anno in corso è 2007, '86' con formato 'RR' significa 1986, ma se l'anno corrente è di 2052, significa 2086.
I seguenti default vengono utilizzati quando un formato - stringa non include un elemento formato per uno dei seguenti componenti di una registrazione data / ora:
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
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.

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
Il valore di nome - locale non è sensibile al caso e deve essere un locale valido (SQLSTATE 42815).

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
    Questi richiami che dipendono dal valore di un registro speciale non possono essere utilizzati ovunque non possano essere utilizzati registri speciali (SQLSTATE 42621, 428ECo 429BX).
  • 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.
       INSERT INTO IN_TRAY (RECEIVED)
         VALUES (TIMESTAMP_FORMAT(:INDATEVAR,
           'DD/MM/RRRR HH24:MI'))
    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:
       '15/12/98 13:48' --> 1998-12-15-13.48.00.000000
       '9-3-2004 8:02'	 --> 2004-03-09-08.02.00.000000