您的位置:首页 > 数据库

postgreSQL操作手册

2016-06-30 17:20 387 查看
时间/日期函数和操作符:

    1. 下面是PostgreSQL中支持的时间/日期操作符的列表:
操作符例子结果
+date'2001-09-28' + integer '7'date'2001-10-05'
+date'2001-09-28' + interval '1 hour'timestamp'2001-09-28 01:00'
+date'2001-09-28' + time '03:00'timestamp'2001-09-28 03:00'
+interval '1day' + interval '1 hour'interval '1day 01:00'
+timestamp'2001-09-28 01:00' + interval '23 hours'timestamp'2001-09-29 00:00'
+time '01:00'+ interval '3 hours'time'04:00'
-- interval'23 hours'interval'-23:00'
-date'2001-10-01' - date '2001-09-28'integer'3'
-date'2001-10-01' - integer '7'date'2001-09-24'
-date'2001-09-28' - interval '1 hour'timestamp'2001-09-27 23:00'
-time '05:00'- time '03:00'interval'02:00'
-time '05:00'- interval '2 hours'time'03:00'
-timestamp'2001-09-28 23:00' - interval '23 hours'timestamp'2001-09-28 00:00'
-interval '1day' - interval '1 hour'interval'23:00'
-timestamp'2001-09-29 03:00' - timestamp '2001-09-27 12:00'interval '1day 15:00'
*interval '1hour' * double precision '3.5'interval'03:30'
/interval '1hour' / double precision '1.5'interval'00:40'
    2.日期/时间函数:
函数返回类型描述例子结果
age(timestamp,timestamp)interval减去参数,生成一个使用年、月的"符号化"的结果age('2001-04-10',timestamp '1957-06-13')43 years 9mons 27 days
age(timestamp)interval从current_date减去得到的数值age(timestamp'1957-06-13')43 years 8mons 3 days
current_datedate今天的日期  
current_timetime现在的时间  
current_timestamptimestamp日期和时间  
date_part(text,timestamp)double获取子域(等效于extract)date_part('hour',timestamp '2001-02-16 20:38:40')20
date_part(text,interval)double获取子域(等效于extract)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-1620:00:00+00
extract(fieldfrom timestamp)double获取子域extract(hourfrom timestamp '2001-02-16 20:38:40')20
extract(fieldfrom interval)double获取子域extract(monthfrom interval '2 years 3 months')3
localtimetime今日的时间  
localtimestamptimestamp日期和时间  
now()timestamp当前的日期和时间(等效于current_timestamp)  
timeofday()text当前日期和时间  
    3.EXTRACT,date_part函数支持的field:
描述例子结果
CENTURY世纪EXTRACT(CENTURY FROMTIMESTAMP '2000-12-16 12:21:13');20
DAY(月分)里的日期域(1-31)EXTRACT(DAYfrom TIMESTAMP '2001-02-16 20:38:40');16
DECADE年份域除以10EXTRACT(DECADE fromTIMESTAMP '2001-02-16 20:38:40');200
DOW每周的星期号(0-6;星期天是0)(仅用于timestamp)EXTRACT(DOWFROM TIMESTAMP '2001-02-16 20:38:40');5
DOY一年的第几天(1-365/366) (仅用于 timestamp)EXTRACT(DOYfrom TIMESTAMP '2001-02-16 20:38:40');47
HOUR小时域(0-23)EXTRACT(HOURfrom TIMESTAMP '2001-02-16 20:38:40');20
MICROSECONDS秒域,包括小数部分,乘以1,000,000。EXTRACT(MICROSECONDS fromTIME '17:12:28.5');28500000
MILLENNIUM千年EXTRACT(MILLENNIUM fromTIMESTAMP '2001-02-16 20:38:40');3
MILLISECONDS秒域,包括小数部分,乘以1000。EXTRACT(MILLISECONDS fromTIME '17:12:28.5');28500
MINUTE分钟域(0-59)EXTRACT(MINUTE fromTIMESTAMP '2001-02-16 20:38:40');38
MONTH对于timestamp数值,它是一年里的月份数(1-12);对于interval数值,它是月的数目,然后对12取模(0-11)EXTRACT(MONTHfrom TIMESTAMP '2001-02-16 20:38:40');2
QUARTER该天所在的该年的季度(1-4)(仅用于timestamp)EXTRACT(QUARTER fromTIMESTAMP '2001-02-16 20:38:40');1
SECOND秒域,包括小数部分(0-59[1])EXTRACT(SECOND fromTIMESTAMP '2001-02-16 20:38:40');40
WEEK该天在所在的年份里是第几周。EXTRACT(WEEKfrom TIMESTAMP '2001-02-16 20:38:40');7
YEAR年份域EXTRACT(YEARfrom TIMESTAMP '2001-02-16 20:38:40');2001
    4.当前日期/时间:

   我们可以使用下面的函数获取当前的日期和/或时间∶
   CURRENT_DATE
   CURRENT_TIME
   CURRENT_TIMESTAMP
   CURRENT_TIME (precision)
   CURRENT_TIMESTAMP (precision)
   LOCALTIME
   LOCALTIMESTAMP
   LOCALTIME (precision)
   LOCALTIMESTAMP (precision)

附上例子:

----mysql查询数据库离最近一天的最近一天的数据

SELECT * FROM tb_data_news WHERE DATE(release_date)= DATE_SUB(DATE((

SELECT MAX(t.release_date) FROM tb_data_news t)),INTERVAL 6 DAY);

 

---- pg 查询数据库离最近一天的最近一天的数据

 

SELECT * FROM tb_data_news WHERE date(release_date)= date((SELECT MAX(t.release_date) FROM tb_data_news t))- integer '13'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 日期 pg数据库