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 일 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 years 9 mons 27 days
age(timestamp)interval从current_date减去参数后的结果(在午夜)age(timestamp '1957-06-13')43 years 8 mons 3 days
clock_timestamp()timestamp with time zone실시간 클록의 현재 타임스탑(문장 실행 시 변합니다)}  
current_datedate현재 날짜;  
current_time시간대 포함 시간오늘 시간;  
current_timestamptimestamp with time zone현재 트랜잭션 시작 시간 테스트;  
date_part(text, timestamp)double precision서브 도메인을 추출합니다(ektract와 동일합니다);date_part('hour', timestamp '2001-02-16 20:38:40')20
date_part(text, interval)double precision서브 도메인을 추출합니다(ektract와 동일합니다);date_part('month', interval '2 years 3 months')3
date_trunc(text, timestamp)timestamp지정된 정밀도로 절단합니다;date_trunc('hour', timestamp '2001-02-16 20:38:40')2001-02-16 20:00:00
date_trunc(text, interval)interval지정된 정밀도를 추출합니다,date_trunc('hour', interval '2 days 3 hours 40 minutes')2 days 03:00:00
extract(field from         timestamp)double precision서브 도메인을 추출합니다;extract(hour from timestamp '2001-02-16 20:38:40')20
extract(field from         interval)double precision서브 도메인을 추출합니다;extract(month from interval '2 years 3 months')3
isfinite(date)boolean유한 날짜인지 테스트합니다(아니요 +/-무한)isfinite(date '2001-02-16')true
isfinite(timestamp)boolean유한 시간 타임스탑(아니요 +/-무한)isfinite(timestamp '2001-02-16 21:28:30')true
isfinite(interval)boolean유한 시간 간격인지 테스트합니다isfinite(interval '4 hours')true
justify_days(interval)interval每月에 따라 30 일 조정 시간 간격justify_days(interval '35 days')1 mon 5 days
justify_hours(interval)interval매일에 따라 24 시간 조정 시간 간격justify_hours(interval '27 hours')1 일 03:00:00
justify_interval(interval)intervaljustify_days와 justify_hours를 사용하여 시간 간격을 조정하면서 부호 조정도 함께 수행합니다justify_interval(interval ')1 mon -1 hour')29 days 23:00:00
localtimetime오늘 시간;  
localtimestamptimestamp현재 트랜잭션 시작 시간 테스트;  
            make_date(year int,             month int,             day int) date년, 월, 일 필드에 대해 날짜를 생성합니다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)           interval년, 월, 주, 일, 시, 분, 초 필드에서 간격을 생성합니다make_interval(days := 10)10 days
          make_time(hour int,           min int,           sec double precision)           time시, 분, 초 필드에서 시간을 생성합니다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)           timestamp년, 월, 일, 시, 분, 초 필드에서 테스트를 생성합니다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 텍스트 ])           timestamp with time zone년, 월, 일, 시, 분, 초 필드에서 시간대를 포함한 테스트를 생성합니다.         timezone이 지정되지 않았을 때, 현재 시간대를 사용합니다.make_timestamptz(2013, 7, 15, 8, 15, 23.5)2013-07-15 08:15:23.5+01
now()timestamp with time zone현재 트랜잭션 시작 시간 테스트;  
statement_timestamp()timestamp with time zone실시간 클록의 현재 시간 테스트;  
timeofday()textclock_timestamp와 동일하지만 결과는 text입니다 문자열;  
transaction_timestamp()timestamp with time zone현재 트랜잭션 시작 시간 테스트;