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

PostgreSQL 基础教程

PostgreSQL 高级教程

PostgreSQL 接口

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 día 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)intervalo减去参数后的"符号化"结果,使用年和月,不只是使用天age(timestamp '2001-04-10', timestamp '1957-06-13')43 años 9 mons 27 días
age(timestamp)intervalo从current_date减去参数后的结果(在午夜)age(timestamp '1957-06-13')43 años 8 mons 3 días
clock_timestamp()timestamp with time zoneEl timestamp actual del reloj de tiempo real (cambia en el momento de la ejecución de la sentencia)}  
current_datefechaLa fecha actual;  
current_timetiempo con zona horariaTiempo actual del día;  
current_timestamptimestamp with time zoneTimestamp cuando comienza la transacción actual;  
date_part(text, timestamp)precisión doubleObtener el subdominio (equivalente a extract);date_part('hour', timestamp '2001-02-16 20:38:40')20
date_part(text, interval)precisión doubleObtener el subdominio (equivalente a extract);date_part('month', interval '2 años 3 meses')3
date_trunc(text, timestamp)timestampCortar a la precisión especificada;date_trunc('hour', timestamp '2001-02-16 20:38:40')2001-02-16 20:00:00
date_trunc(text, interval)intervaloCortar a la precisión especificada,date_trunc('hour', interval '2 días 3 horas 40 minutos')2 días 03:00:00
extraer(campo de         timestamp)precisión doubleObtener el subdominio;extraer(hora de timestamp '2001-02-16 20:38:40')20
extraer(campo de         interval)precisión doubleObtener el subdominio;extraer(month de interval '2 años 3 meses')3
isfinite(date)booleanProbar si la fecha es finita (no +/-infinito)isfinite(date '2001-02-16')true
isfinite(timestamp)booleanProbar si el timestamp es finito (no +/-infinito)isfinite(timestamp '2001-02-16 21:28:30')true
isfinite(interval)booleanProbar si el intervalo de tiempo es finitoisfinite(interval '4 horas')true
justify_days(interval)intervalosegún cada mes 30 días ajuste el intervalo de tiempojustify_days(interval '35 días')1 mon 5 días
justify_hours(interval)intervalosegún cada día 24 Ajuste el intervalo de tiempo en horasjustify_hours(interval '27 horas')1 día 03:00:00
justify_interval(interval)intervaloAjuste el intervalo de tiempo utilizando justify_days y justify_hours al mismo tiempo que ajusta los signos positivo y negativojustificar_interval(interval ')1 mon -1 hour')29 días 23:00:00
localtimetiempoTiempo actual del día;  
localtimestamptimestampTimestamp cuando comienza la transacción actual;  
            make_date(year int,             month int,             día int) fechaCrear una fecha para los campos año, mes y día.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)           intervaloCrear un intervalo a partir de los campos año, mes, semana, día, hora, minuto y segundo.make_interval(days := 10)10 días
          make_time(hour int,           min int,           sec double precision)           tiempoCrear un tiempo a partir de los campos hora, minuto y segundo.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)           timestampCrear un timestamp a partir de los campos año, mes, día, hora, minuto y segundo.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,           [ texto timezone ])           timestamp with time zoneCrear un timestamp con zona horaria a partir de los campos año, mes, día, hora, minuto y segundo.         Si no se especifica timezone, se utiliza la zona horaria actual.make_timestamptz(2013, 7, 15, 8, 15, 23.5)2013-07-15 08:15:23.5+01
now()timestamp with time zoneTimestamp cuando comienza la transacción actual;  
statement_timestamp()timestamp with time zoneTimestamp actual del reloj de tiempo real;  
timeofday()textoIgual que clock_timestamp, pero el resultado es un texto Cadena;  
transaction_timestamp()timestamp with time zoneTimestamp cuando comienza la transacción actual;