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

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

日期/时间操作符

下表演示了基本算术操作符的行为(+,*, 等):

操作符实例结果
+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 jour 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)interval减去参数后的"符号化"结果,使用年和月,不只是使用天age(timestamp '2001-04-10', timestamp '1957-06-13')43 annes 9 mons 27 days
age(timestamp)interval从current_date减去参数后的结果(在午夜)age(timestamp '1957-06-13')43 annes 8 mons 3 days
clock_timestamptimestamp with time zoneLe timestamp actuel du chronomètre en temps réel (qui change lors de l'exécution de la phrase)}  
current_datedateLa date actuelle ;  
current_timetime with time zoneHeure actuelle du jour ;  
current_timestamptimestamp with time zoneTimestamp de début de la transaction actuelle ;  
date_part(text, timestamp)double precisionObtenir le sous-domaine (équivalent à extract);date_part('hour', timestamp '2001-02-16 20:38:40')20
date_part(text, interval)double precisionObtenir le sous-domaine (équivalent à extract);date_part('month', interval '2 annes 3 mois')3
date_trunc(text, timestamp)timestampTronquer à la précision spécifiée ;date_trunc('hour', timestamp '2001-02-16 20:38:40')2001-02-16 20:00:00
date_trunc(text, interval)intervalTronquer à la précision spécifiée,date_trunc('hour', interval '2 days 3 heures 40 minutes')2 jours 03:00:00
extract(field from         timestamp)double precisionObtenir le sous-domaine ;extract(hour from timestamp '2001-02-16 20:38:40')20
extract(field from         interval)double precisionObtenir le sous-domaine ;extract(month from interval '2 annes 3 mois')3
isfinite(date)booleanTester si la date est bornée (ce n'est pas +/-Infini)isfinite(date '2001-02-16')true
isfinite(timestamp)booleanTester si le timestamp est borné (ce n'est pas +/-Infini)isfinite(timestamp '2001-02-16 21:28:30')true
isfinite(interval)booleanTester si l'intervalle de temps est bornéisfinite(interval '4 heures')true
justify_days(interval)intervalSelon chaque mois 30 jours ajuster l'intervalle de tempsjustify_days(interval '35 jours')1 mon 5 days
justify_hours(interval)intervalSelon chaque jour 24 Ajustement de l'intervalle de temps en heuresjustify_hours(interval '27 heures')1 jour 03:00:00
justify_interval(interval)intervalAjuster l'intervalle de temps avec justify_days et justify_hours tout en ajustant les signes positifs et négatifsjustifier_interval(interval '1 mon -1 hour')29 days 23:00:00
localtimetimeHeure actuelle du jour ;  
localtimestamptimestampTimestamp de début de la transaction actuelle ;  
            make_date(year int,             month int,             day int) dateCrée une date pour les champs année, mois et jour.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)           intervalCrée une intervalle à partir des champs année, mois, semaine, jour, heure, minute et seconde.make_interval(days := 10)10 days
          make_time(hour int,           min int,           sec double precision)           timeCrée une heure à partir des champs heure, minute et seconde.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)           timestampCrée un timestamp à partir des champs année, mois, jour, heure, minute et seconde.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 texte ])           timestamp with time zoneCrée un timestamp avec timezone à partir des champs année, mois, jour, heure, minute et seconde.         Utilise la timezone actuelle si none est spécifiée.make_timestamptz(2013, 7, 15, 8, 15, 23.5)2013-07-15 08:15:23.5+01
now()timestamp with time zoneTimestamp de début de la transaction actuelle ;  
statement_timestamp()timestamp with time zoneTimestamp actuel du chronomètre en temps réel ;  
timeofday()textComme clock_timestamp, mais le résultat est un texte Chaîne de caractères ;  
transaction_timestamp()timestamp with time zoneTimestamp de début de la transaction actuelle ;