時間/日期函數和操作符:
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.日期/時間函數:
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'