English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PostgreSQL 时间/日期函数和操作符

operatori di data/ora

La tabella sottostante dimostra il comportamento degli operatori aritmetici di base (+, *, ecc.):

operatore实例结果
+date '2001-09-28' + integer '7'date '2001-10-05'
+date '2001-09-28' + interval '1 hour'timestamp '2001-09-28 01:00:00'
+date '2001-09-28' + time '03:00'timestamp '2001-09-28 03:00:00'
+interval '1 day' + interval '1 hour'interval '1 day 01:00:00'
+timestamp '2001-09-28 01:00' + interval '23 hours'timestamp '2001-09-29 00:00:00'
+time '01:00' + interval '3 hours'time '04:00:00'
-- interval '23 hours'interval '-23:00:00'
-date '2001-10-01' - date '2001-09-28'integer '3' (days)
-date '2001-10-01' - integer '7'date '2001-09-24'
-date '2001-09-28' - interval '1 hour'timestamp '2001-09-27 23:00:00'
-time '05:00' - time '03:00'interval '02:00:00'
-time '05:00' - interval '2 hours'time '03:00:00'
-timestamp '2001-09-28 23:00' - interval '23 hours'timestamp '2001-09-28 00:00:00'
-interval '1 day' - interval '1 hour'interval '1 day -01:00:00'
-timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00'interval '1 day 15:00:00'
*900 * interval '1 second'interval '00:15:00'
*21 * interval '1 day'interval '21 days'
*double precision '3.5' * interval '1 hour'interval '03:30:00'
/interval '1 hour' / double precision '1.5'interval '00:40:00'

日期/时间函数

函数返回类型描述实例结果
age(timestamp, timestamp)intervallo减去参数后的"符号化"结果,使用年和月,不只是使用天age(timestamp '2001-04-10', timestamp '1957-06-13')43 anni 9 mesi 27 giorni
age(timestamp)intervallo从current_date减去参数后的结果(在午夜)age(timestamp '1957-06-13')43 anni 8 mesi 3 giorni
clock_timestamp()timestamp with time zone实时时钟的当前时间戳(在语句执行时变化)  
current_datedate当前的日期;  
current_time带时区的当前时间giorno corrente;  
current_timestamptimestamp with time zoneOra iniziale della transazione corrente;  
date_part(text, timestamp)double precision获取子域(相当于extract);date_part('hour', timestamp '2001-02-16 20:38:40')20
date_part(text, interval)double precision获取子域(相当于extract);date_part('month', interval '2 years 3 months')3
date_trunc(text, timestamp)timestamptrattenere la precisione specificata;date_trunc('ora', timestamp '2001-02-16 20:38:40')2001-02-16 20:00:00
date_trunc(testo, intervallo)intervallotrattenere la precisione specificata,date_trunc('ora', interval '2 giorni 3 ore 40 minuti')2 giorni 03:00:00
extract campo da         timestamp)double precisionottenere il dominio secondario;extract(hour from timestamp '2001-02-16 20:38:40')20
extract campo da         intervallo)double precisionottenere il dominio secondario;extract(month from interval '2 anni 3 mesi')3
isfinite(data)booleantestare se la data è finita (non +/-infinito)isfinite(data '2001-02-16')true
isfinite(timestamp)booleantestare se il timestamp è finito (non +/-infinito)isfinite(timestamp '2001-02-16 21:28:30')true
isfinite(interval)booleantestare se l'intervallo di tempo è finitoisfinite(interval '4 ore')true
justify_days(interval)intervalloregolare l'intervallo di tempo in base a 30 giorni al mesejustify_days(interval '35 giorni')1 mese 5 giorni
justify_hours(interval)intervalloregolare l'intervallo di tempo in base a 24 ore al giornojustify_hours(interval '27 ore')1 giorno 03:00:00
justify_interval(interval)intervallousare justify_days e justify_hours per regolare l'intervallo di tempo e la segnaleticajustify_interval(interval '1 mese -1 ora')29 giorni 23:00:00
localtimetimegiorno corrente;  
localtimestamptimestampOra iniziale della transazione corrente;  
            make_date(year int,             month int,             day int) dateCrea una data dai campi anno, mese e giorno.make_date(2013, 7, 15)2013-07-15
          make_interval(years int DEFAULT 0,           months int DEFAULT 0,           weeks int DEFAULT 0,           days int DEFAULT 0,           hours int DEFAULT 0,           mins int DEFAULT 0,           secs double precision DEFAULT 0.0)           intervalloCrea un intervallo dai campi anno, mese, settimana, giorno, ora, minuto e secondo.make_interval(days := 10)10 giorni
          make_time(hour int,           min int,           sec double precision)           timeCrea un orario dai campi ora, minuto e secondo.make_time(8, 15, 23.5)08:15:23.5
          make_timestamp(year int,           month int,           day int,           hour int,           min int,           sec double precision)           timestampCrea un timestamp dai campi anno, mese, giorno, ora, minuto e secondo.make_timestamp(2013, 7, 15, 8, 15, 23.5)2013-07-15 08:15:23.5
          make_timestamptz(year int,           month int,           day int,           hour int,           min int,           sec double precision,           [ timezone testo ])           timestamp with time zoneCrea un timestamp con timezone dai campi anno, mese, giorno, ora, minuto e secondo.         Se non viene specificato il timezone, viene utilizzato il timezone corrente.make_timestamptz(2013, 7, 15, 8, 15, 23.5)2013-07-15 08:15:23.5+01
now()timestamp with time zoneOra iniziale della transazione corrente;  
statement_timestamp()timestamp with time zoneTimestamp corrente dell'orologio in tempo reale;  
timeofday()textUguale a clock_timestamp, ma il risultato è un text stringa;  
transaction_timestamp()timestamp with time zoneOra iniziale della transazione corrente;