Postgresql时间处理
生活随笔
收集整理的這篇文章主要介紹了
Postgresql时间处理
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
時(shí)間/日期操作符
日期/時(shí)間函數(shù)
EXTRACT函數(shù)
綜合示例
時(shí)間/日期操作符
?
| 操作符 | 例子 | 結(jié)果 |
| + | date '2011-09-28' + integer '7' | date '2011-10-05' |
| + | date '2011-09-18' + interval '1 hour' | timestamp '2011-09-18 01:00' |
| + | date '2011-09-18' + time '02:00' | timestamp '2011-09-18 02:00' |
| + | interval '1 day' + interval '1 hour' | interval '1 day 01:00' |
| + | timestamp '2011-09-28 01:00' + interval '23 hours' | timestamp '2011-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 '2011-10-01' - integer '7' | date '2011-09-24' |
| - | date '2011-09-28' - interval '1 hour' | timestamp '2011-09-27 23:00' |
| - | time '05:00' - time '03:00' | interval '02:00' |
| - | time '05:00' - interval '2 hours' | time '03:00' |
| - | timestamp '2011-09-28 23:00' - interval '23 hours' | timestamp '2011-09-28 00:00' |
| - | interval '1 day' - interval '1 hour' | interval '23:00' |
| - | timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00' | interval '1 day 15:00' |
| * | interval '1 hour' * double precision '3.5' | interval '03:30' |
| / | interval '1 hour' / double precision '1.5' | interval '00:40' |
?
日期/時(shí)間函數(shù)
| 函數(shù) | 返回類型 | 描述 | 例子 | 結(jié)果 |
| age(timestamp, timestamp) | interval | 減去參數(shù),生成一個(gè)使用年、月的"符號(hào)化"的結(jié)果 | age('2001-04-10', timestamp '1957-06-13') | 43 years 9 mons 27 days |
| age(timestamp) | interval | 從current_date減去得到的數(shù)值 | age(timestamp '1957-06-13') | 43 years 8 mons 3 days |
| current_date | date | 今天的日期 | ? | ? |
| current_time | time | 現(xiàn)在的時(shí)間 | ? | ? |
| current_timestamp | timestamp | 日期和時(shí)間 | ? | ? |
| date_part(text, timestamp) | double | 獲取子域(等效于extract) | date_part('hour', timestamp '2012-05-06 10:20:30') | 10 |
| date_part(text, interval) | double | 獲取子域(等效于extract) | date_part('month', interval '2 years 3 months') | 3 |
| date_trunc(text, timestamp) | timestamp | 截?cái)喑芍付ǖ木?/td> | date_trunc('hour', timestamp '2012-05-06 10:20:30') | 2012-05-06 10:00:00+00 |
| extract(field from timestamp) | double | 獲取子域 | extract(hour from timestamp '2012-05-06 10:20:30') | 10 |
| extract(field from interval) | double | 獲取子域 | extract(month from interval '2 years 3 months') | 3 |
| localtime | time | 今日的時(shí)間 | ? | ? |
| localtimestamp | timestamp | 日期和時(shí)間 | ? | ? |
| now() | timestamp | 當(dāng)前的日期和時(shí)間(等效于 current_timestamp) | ? | ? |
| timeofday() | text | 當(dāng)前日期和時(shí)間 | ? | ? |
?
EXTRACT函數(shù)
用于取出時(shí)間中的一部分,比如取出小時(shí)部分,參數(shù)示例如下:
| 域 | 描述 | 例子 | 結(jié)果 |
| CENTURY | 世紀(jì) | EXTRACT(CENTURY FROM TIMESTAMP '2000-12-16 12:21:13'); | 20 |
| DAY | (月分)里的日期域(1-31) | EXTRACT(DAY from TIMESTAMP '2001-02-16 20:38:40'); | 16 |
| DECADE | 年份域除以10 | EXTRACT(DECADE from TIMESTAMP '2001-02-16 20:38:40'); | 200 |
| DOW | 每周的星期號(hào)(0-6;星期天是0) (僅用于timestamp) | EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40'); | 5 |
| DOY | 一年的第幾天(1 -365/366) (僅用于 timestamp) | EXTRACT(DOY from TIMESTAMP '2001-02-16 20:38:40'); | 47 |
| HOUR | 小時(shí)域(0-23) | EXTRACT(HOUR from TIMESTAMP '2001-02-16 20:38:40'); | 20 |
| MICROSECONDS | 秒域,包括小數(shù)部分,乘以 1,000,000。 | EXTRACT(MICROSECONDS from TIME '17:12:28.5'); | 28500000 |
| MILLENNIUM | 千年 | EXTRACT(MILLENNIUM from TIMESTAMP '2001-02-16 20:38:40'); | 3 |
| MILLISECONDS | 秒域,包括小數(shù)部分,乘以 1000。 | EXTRACT(MILLISECONDS from TIME '17:12:28.5'); | 28500 |
| MINUTE | 分鐘域(0-59) | EXTRACT(MINUTE from TIMESTAMP '2001-02-16 20:38:40'); | 38 |
| MONTH | 對(duì)于timestamp數(shù)值,它是一年里的月份數(shù)(1-12);對(duì)于interval數(shù)值,它是月的數(shù)目,然后對(duì)12取模(0-11) | EXTRACT(MONTH from TIMESTAMP '2001-02-16 20:38:40'); | 2 |
| QUARTER | 該天所在的該年的季度(1-4)(僅用于 timestamp) | EXTRACT(QUARTER from TIMESTAMP '2001-02-16 20:38:40'); | 1 |
| SECOND | 秒域,包括小數(shù)部分(0-59[1]) | EXTRACT(SECOND from TIMESTAMP '2001-02-16 20:38:40'); | 40 |
| WEEK | 該天在所在的年份里是第幾周。 | EXTRACT(WEEK from TIMESTAMP '2001-02-16 20:38:40'); | 7 |
| YEAR | 年份域 | EXTRACT(YEAR from TIMESTAMP '2001-02-16 20:38:40'); | 2001 |
?
綜合示例
獲取當(dāng)前據(jù)本周五23:59還有多少小時(shí)多少分鐘
select EXTRACT(HOUR FROM(CURRENT_DATE + time '23:59') - CURRENT_TIMESTAMP) + (6 - extract(dow from current_date) )*24 "hour",
EXTRACT(MINUTE FROM(CURRENT_DATE + time '23:59') - CURRENT_TIMESTAMP) "minute";
?
總結(jié)
以上是生活随笔為你收集整理的Postgresql时间处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 什么是Dao层、Entity层、Serv
- 下一篇: 非合作博弈篇——纳什均衡(Nash Eq