Funzioni di data
Amazon S3 Select supporta le seguenti funzioni di data.
DATE_ADD
Dati una parte di data, una quantità e un timestamp, restituisce un timestamp aggiornato modificando la parte di data in base alla quantità.
Sintassi
DATE_ADD(
date_part
,quantity
,timestamp
)
Parametri
date_part
-
Specifica la parte di data da modificare. Può essere una delle seguenti:
-
anno
-
mese
-
giorno
-
ora
-
minuti
-
secondo
-
-
quantity
-
Il valore da applicare al timestamp aggiornato. I valori positivi per
vengono aggiunti a date_part del timestamp, mentre i valori negativi vengono sottratti.quantity
-
timestamp
-
Il timestamp di destinazione su cui viene eseguita la funzione.
Esempi
DATE_ADD(year, 5, `2010-01-01T`) -- 2015-01-01 (equivalent to 2015-01-01T) DATE_ADD(month, 1, `2010T`) -- 2010-02T (result will add precision as necessary) DATE_ADD(month, 13, `2010T`) -- 2011-02T DATE_ADD(day, -1, `2017-01-10T`) -- 2017-01-09 (equivalent to 2017-01-09T) DATE_ADD(hour, 1, `2017T`) -- 2017-01-01T01:00-00:00 DATE_ADD(hour, 1, `2017-01-02T03:04Z`) -- 2017-01-02T04:04Z DATE_ADD(minute, 1, `2017-01-02T03:04:05.006Z`) -- 2017-01-02T03:05:05.006Z DATE_ADD(second, 1, `2017-01-02T03:04:05.006Z`) -- 2017-01-02T03:04:06.006Z
DATE_DIFF
Dati una parte di data e due timestamp validi, DATE_DIFF
restituisce la differenza in parti di data. Il valore restituito è un numero intero negativo quando il valore
di date_part
è maggiore del valore timestamp1
di date_part
. Il valore restituito è un numero intero positivo quando il valore timestamp2
di date_part
è minore del valore timestamp1
di date_part
.timestamp2
Sintassi
DATE_DIFF(
date_part
,timestamp1
,timestamp2
)
Parametri
-
date_part
-
Specifica la parte dei timestamp da confrontare. Per la definizione di
date_part
, consulta DATE_ADD. -
timestamp1
-
Il primo timestamp da confrontare.
-
timestamp2
-
Il secondo timestamp da confrontare.
Esempi
DATE_DIFF(year, `2010-01-01T`, `2011-01-01T`) -- 1 DATE_DIFF(year, `2010T`, `2010-05T`) -- 4 (2010T is equivalent to 2010-01-01T00:00:00.000Z) DATE_DIFF(month, `2010T`, `2011T`) -- 12 DATE_DIFF(month, `2011T`, `2010T`) -- -12 DATE_DIFF(day, `2010-01-01T23:00`, `2010-01-02T01:00`) -- 0 (need to be at least 24h apart to be 1 day apart)
EXTRACT
Dati una parte di data e un timestamp, EXTRACT
restituisce il valore della parte di data del timestamp.
Sintassi
EXTRACT(
date_part
FROMtimestamp
)
Parametri
-
date_part
-
Specifica la parte dei timestamp da estrarre. Può essere una delle seguenti:
-
YEAR
-
MONTH
-
DAY
-
HOUR
-
MINUTE
-
SECOND
-
TIMEZONE_HOUR
-
TIMEZONE_MINUTE
-
-
timestamp
-
Il timestamp di destinazione su cui viene eseguita la funzione.
Esempi
EXTRACT(YEAR FROM `2010-01-01T`) -- 2010 EXTRACT(MONTH FROM `2010T`) -- 1 (equivalent to 2010-01-01T00:00:00.000Z) EXTRACT(MONTH FROM `2010-10T`) -- 10 EXTRACT(HOUR FROM `2017-01-02T03:04:05+07:08`) -- 3 EXTRACT(MINUTE FROM `2017-01-02T03:04:05+07:08`) -- 4 EXTRACT(TIMEZONE_HOUR FROM `2017-01-02T03:04:05+07:08`) -- 7 EXTRACT(TIMEZONE_MINUTE FROM `2017-01-02T03:04:05+07:08`) -- 8
TO_STRING
Dati un timestamp e un pattern di formato, TO_STRING
restituisce una rappresentazione in formato stringa del timestamp fornito nel formato specificato.
Sintassi
TO_STRING (
timestamp
time_format_pattern
)
Parametri
-
timestamp
-
Il timestamp di destinazione su cui viene eseguita la funzione.
-
time_format_pattern
-
Una stringa che ha le seguenti interpretazioni di caratteri speciali.
Formato
Esempio
Descrizione
yy
69
Anno a 2 cifre
y
1969
Anno a 4 cifre
yyyy
1969
Anno a 4 cifre con l'aggiunta di zero
M
1
Mese dell'anno
MM
01
Mese dell'anno con l'aggiunta di zero
MMM
Jan
Nome abbreviato del mese dell'anno
MMMM
January
Nome completo del mese dell'anno
MMMMM
J
Prima lettera del mese dell'anno (NOTA: questo formato non è utilizzabile con la funzione
TO_TIMESTAMP
.)d
2
Giorno del mese (1-31)
dd
02
Giorno del mese con l'aggiunta di zero (01-31)
a
AM
AM o PM
h
3
Ora del giorno (1-12)
hh
03
Ora del giorno con l'aggiunta di zero (01-12)
H
3
Ora del giorno (0-23)
HH
03
Ora del giorno con l'aggiunta di zero (00-23)
m
4
Minuto dell'ora (0-59)
mm
04
Minuto dell'ora con l'aggiunta di zero (00-59)
s
5
Secondo del minuto (0-59)
ss
05
Secondo del minuto con l'aggiunta di zero (00-59)
S
0
Frazione di secondo (precisione: 0,1, intervallo: 0,0-0,9)
SS
6
Frazione di secondo (precisione: 0,01, intervallo: 0,0-0,99)
SSS
60
Frazione di secondo (precisione: 0,001, intervallo: 0,0-0,999)
…
…
…
SSSSSSSSS
60000000
Frazione di secondo (precisione massima: 1 nanosecondo, intervallo: 0,0-0,999999999)
n
60000000
Nano di secondo
X
+07
oZ
Offset in ore o
Z
se l'offset è 0XX
oXXXX
+0700
oZ
Offset in ore e minuti o
Z
se l'offset è 0XXX
oXXXXX
+07:00
oZ
Offset in ore e minuti o
Z
se l'offset è 0x
7
Offset in ore
xx
oxxxx
700
Offset in ore e minuti
xxx
oxxxxx
+07:00
Offset in ore e minuti
Esempi
TO_STRING(`1969-07-20T20:18Z`, 'MMMM d, y') -- "July 20, 1969" TO_STRING(`1969-07-20T20:18Z`, 'MMM d, yyyy') -- "Jul 20, 1969" TO_STRING(`1969-07-20T20:18Z`, 'M-d-yy') -- "7-20-69" TO_STRING(`1969-07-20T20:18Z`, 'MM-d-y') -- "07-20-1969" TO_STRING(`1969-07-20T20:18Z`, 'MMMM d, y h:m a') -- "July 20, 1969 8:18 PM" TO_STRING(`1969-07-20T20:18Z`, 'y-MM-dd''T''H:m:ssX') -- "1969-07-20T20:18:00Z" TO_STRING(`1969-07-20T20:18+08:00Z`, 'y-MM-dd''T''H:m:ssX') -- "1969-07-20T20:18:00Z" TO_STRING(`1969-07-20T20:18+08:00`, 'y-MM-dd''T''H:m:ssXXXX') -- "1969-07-20T20:18:00+0800" TO_STRING(`1969-07-20T20:18+08:00`, 'y-MM-dd''T''H:m:ssXXXXX') -- "1969-07-20T20:18:00+08:00"
TO_TIMESTAMP
Data una stringa, TO_TIMESTAMP
la converte in un timestamp. TO_TIMESTAMP
è l'operazione inversa di TO_STRING
.
Sintassi
TO_TIMESTAMP (
string
)
Parametri
-
string
-
La stringa di destinazione su cui viene eseguita la funzione.
Esempi
TO_TIMESTAMP('2007T') -- `2007T` TO_TIMESTAMP('2007-02-23T12:14:33.079-08:00') -- `2007-02-23T12:14:33.079-08:00`
UTCNOW
Restituisce l'ora corrente in UTC come timestamp.
Sintassi
UTCNOW()
Parametri
UTCNOW
non prende parametri.
Esempi
UTCNOW() -- 2017-10-13T16:02:11.123Z