PostgreSQL時間處理的一些常用方式總結
1.獲取當前時間
now()函數:
select now();
current_timestamp,同now():
select current_timestamp;
select current_time;
select current_date;
可以去掉now()、掉后面的+8等:
select now()::timestamp(0)without time zone; select current_timestamp::timestamp(0)without time zone;
2.date_part函數
語法:DATE_PART(field, source), filed可以理解為要截取的類型。
下面是filed支持的類型:
CENTURY,世紀,獲取日期所在的世紀:
select date_part('CENTURY', TIMESTAMP '2022-12-16 12:21:13'); select date_part('CENTURY', now());
MILLENNIUM,千年
select date_part('MILLENNIUM', timestamp '2022-12-16 13:21:15');
YEAR,年份域
select date_part('YEAR', timestamp '2022-12-16 13:21:15');
MONTH,對于timestamp數值,它是一年里的月份數(1-12);對于interval數值,它是月的數目,然后對12取模(0-11)
select date_part('MONTH', timestamp '2022-12-16 13:21:15');
select date_part('month', interval '2 years 5 months')
DAY,日期里的天,值是1-31:
select date_part('day', TIMESTAMP '2022-12-16 12:21:13'); select date_part('day', now());
HOUR,小時(0-23)
select date_part('HOUR', TIMESTAMP '2022-12-16 12:21:13');
MINUTE,分鐘域(0-59)
select date_part('MINUTE', TIME '2022-12-16 13:21:15');
SECOND,秒域,包括小數部分(0-59[1])
select date_part('SECOND', timestamp '2022-12-16 13:21:15');
MICROSECONDS,秒域(包括小數)乘以 1,000,000
select date_part('MICROSECONDS', TIME '2022-12-16 13:21:15');
MILLISECONDS,秒域(包括小數)乘以 1,000
select date_part('MILLISECONDS', timestamp '2022-12-16 13:21:15');
DECADE,年份域除以10:
select date_part('DECADE', TIMESTAMP '2022-12-16 12:21:13');
DOW,星期號(0-6;星期天是0) (僅用于timestamp)
select date_part('DOW', TIMESTAMP '2022-12-16 12:21:13'); select date_part('DOW', now());
DOY,一年中的第幾天(1 -365/366) (僅用于 timestamp)
select date_part('DOY', TIMESTAMP '2022-12-16 12:21:13');
QUARTER,該天所在的該年的季度(1-4)(僅用于 timestamp)
select date_part('QUARTER', timestamp '2022-12-16 13:21:15');
WEEK,該天在所在的年份里是第幾周。
select date_part('WEEK', timestamp '2022-12-16 13:21:15');
3.extract()函數
使用語法:extract (field from source),field 支持的類型,和date_part()函數一樣
select extract ('year' from timestamp '2022-12-16 13:21:15')
4.日期格式化函數
to_char(timestamp, text),把時間戳轉換成字串
select to_char(now(), 'YYYY-MM-DD HH24:MI:SS')
to_date(text, text) 把字串轉換成日期
select to_date('05 Dec 2022', 'DD Mon YYYY')
to_timestamp(text, text) ,把字串轉換成時間戳
select to_timestamp('05 Dec 2022', 'DD Mon YYYY')
5.時間運算
select date '2001-09-28' + integer '7'; select date '2001-09-28' + interval '1 hour'; select date '2001-09-28' + time '03:00'; select interval '1 day' + interval '1 hour'; select timestamp '2001-09-28 01:00' + interval '23 hours'; select time '01:00' + interval '3 hours'; select - interval '23 hours'; select date '2001-10-01' - date '2001-09-28'; select date '2001-10-01' - integer '7'; select date '2001-09-28' - interval '1 hour'; select time '05:00' - time '03:00'; select time '05:00' - interval '2 hours; select timestamp '2001-09-28 23:00' - interval '23 hours'; select interval '1 day' - interval '1 hour'; select timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00'; select interval '1 hour' * double precision '3.5'; select interval '1 hour' / double precision '1.5';
6.計算時間差
select now() + interval '10 min/year/month/day/hour/sec/ (1 year 1 month 1 day 1 hour 1 min 1 sec)' select now() - interval '10 min/year/month/day/hour/sec/ (1 year 1 month 1 day 1 hour 1 min 1 sec)' select now()::timestamp(0)without time zone-interval '72 hour' select extract(day from now() - '2001-09-27 12:00') from user ;
總結
到此這篇關于pgsql時間處理的一些常用方式總結的文章就介紹到這了,更多相關pgsql時間處理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
postgresql查詢每個月的最后一天日期并對未查到的日期結果補0(操作示例)
這篇文章主要介紹了postgresql查詢每個月的最后一天日期,并對未查到的日期結果補0,pgsql需要使用函數使用date_trunc()函數找到指定月第一天,然后對該日期先加一個月在減一個月就能得到你傳給的日期的最后一天日期,感興趣的朋友跟隨小編一起看看吧2023-10-10淺談PostgreSQL中的孤兒文件用法(orphaned data files)
這篇文章主要介紹了淺談PostgreSQL中的孤兒文件用法(orphaned data files),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01Docker環(huán)境下升級PostgreSQL的步驟方法詳解
這篇文章主要介紹了Docker環(huán)境下升級PostgreSQL的步驟方法詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01Linux CentOS 7源碼編譯安裝PostgreSQL9.5
這篇文章主要為大家詳細介紹了Linux CentOS 7源碼編譯安裝PostgreSQL9.5的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11