postgreSQL操作手册

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


    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_date date 今天的日期    
current_time time 现在的时间    
current_timestamp timestamp 日期和时间    
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
localtime time 今日的时间    
localtimestamp timestamp 日期和时间    
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 年份域除以10 EXTRACT(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'


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值