最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

postgresql查詢今天、昨天、本周、本月、上月、今年、去年的時(shí)間以及計(jì)算時(shí)間之差

 更新時(shí)間:2024年08月14日 11:05:47   作者:我叫yeeking啊  
PostgreSQL提供了許多返回當(dāng)前日期和時(shí)間的函數(shù),下面這篇文章主要給大家介紹了關(guān)于postgresql查詢今天、昨天、本周、本月、上月、今年、去年的時(shí)間以及計(jì)算時(shí)間之差的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在項(xiàng)目遇到一個(gè)需求是查詢統(tǒng)計(jì)今天、昨天、本周、本月、上月、今年、去年的時(shí)間數(shù)據(jù),最近一個(gè)月的,最近一年的月份數(shù)據(jù),使用的是pgSql數(shù)據(jù)庫:

獲取當(dāng)前系統(tǒng)時(shí)間

select now();
select current_timestamp;
結(jié)果:2020-11-04 16:09:53.247825+08

獲取當(dāng)前日期或時(shí)間

select current_date;
結(jié)果:2020-11-04
select current_time;
結(jié)果:16:14:08.501182+08

查詢昨天的數(shù)據(jù)

select 
	DISTINCT count(id)
from 
	表名
where coalesce(l.join_date,l.sys_createdate) >= current_date - 1;

# 這里的coalesce函數(shù),語法:coalesce(expr1,expr2,expr3...)
# 如果第一個(gè)字段存在就用第一個(gè)進(jìn)行表達(dá)式判斷;
# 如果第一個(gè)不存在為null則用第二個(gè)進(jìn)行表達(dá)式判斷;
# 如果都沒有null則返回null

查詢某個(gè)時(shí)間的周一

SELECT ( DATE '2020-10-23' - INTERVAL '1 day' - ( EXTRACT ( dow FROM ( DATE'2020-10-23' - INTERVAL '1 day' ) ) - 1 || ' day' ) :: INTERVAL ) :: DATE;
# 減1 是因?yàn)榈玫降氖且灾芤皇切瞧诘拈_始

查詢本周的數(shù)據(jù)

SELECT( DATE ( now() ) - ( EXTRACT ( dow FROM DATE ( now() ) ) - 1 || ' day' ) :: INTERVAL ) :: DATE startasy,
( DATE ( now() ) - ( EXTRACT ( dow FROM DATE ( now() ) ) - 1 || ' day' ) :: INTERVAL ) :: DATE + 6 endday
	from 表名 LIMIT 1;

本周最后一天

SELECT to_char(CURRENT_DATE +cast(-1*(TO_NUMBER(to_char(CURRENT_DATE,'D'),'99')-2) + 6 ||' days' as interval),'yyyy-mm-dd');
# 加6天就表示是周日 不加就是本周的第一天

本月,方式一

select to_char((SELECT now() as timestamp),'mm');

本月,方式二

select * from 表名 where time >= date_trunc( 'month', now() ); 

獲取上月

select to_char((select  now() - interval '1 month'),'mm');

獲取今年

select to_char((SELECT now() as timestamp),'yyyy')

獲取去年

select to_char((select  now() - interval '1 years'),'yyyy')

(補(bǔ)充)獲取過去12個(gè)月或者今年月份的數(shù)據(jù)

WITH RECURSIVE T (n) AS (
SELECT DATE(to_char( to_date('2022-08', 'yyyy-MM-dd') - INTERVAL '11 month', 'yyyy-MM-dd' ))
UNION ALL
SELECT
n + 1
FROM
T
WHERE
n < DATE( to_char( to_date('2022-08', 'yyyy-MM-dd'), 'yyyy-MM-dd' ) )
) SELECT
to_char( n, 'yyyy-MM' ) AS MONTH
FROM T
GROUP BY
MONTH ORDER BY Month
# 只要月份修改成2022-12就表示查詢今年內(nèi)的所有月份

(補(bǔ)充)獲取過去一個(gè)月內(nèi)的所有天的數(shù)據(jù)

WITH RECURSIVE T ( n ) AS (
SELECT DATE
( to_char( now( ) - INTERVAL '30 day', 'yyyy-MM-dd' ) ) UNION ALL
SELECT
n + 1
FROM
T
WHERE
n < DATE ( to_char( now( ), 'yyyy-MM-dd' ) )
) SELECT
to_char( n, 'yyyy-MM-dd' ) AS DAYS
FROM T
GROUP BY
DAYS
ORDER BY DAYS

(補(bǔ)充)獲取上個(gè)月每天的數(shù)據(jù)(1號(hào)-31號(hào))

SELECT
 generate_series (
  date_trunc( 'month', CURRENT_DATE - interval '1 month'),
  date_trunc( 'month', CURRENT_DATE) - interval '1 day',
  '1 d' :: INTERVAL
 ) :: DATE days

(補(bǔ)充)獲取本月每天的數(shù)據(jù)(1號(hào)-31號(hào))

SELECT
 generate_series (
  date_trunc( 'month', CURRENT_DATE),
  date_trunc( 'month', CURRENT_DATE)  + '1 month -1d',
  '1 d' :: INTERVAL
 ) :: DATE days

(補(bǔ)充)獲取某一天24小時(shí)的時(shí)刻

 select to_char(t,'yyyy-MM-DD HH24') as day
 from 
 generate_series('2022-01-01 00:00:00'::DATE,'2022-01-01 23:00:00', '1 hours') as t order by day asc;

或者這樣寫(方便傳參):獲取某一天24小時(shí)的時(shí)刻

SELECT
	to_char( T, 'yyyy-mm-dd HH24' ) AS HOUR 
FROM
	generate_series ( to_date( '2022-01-01', 'yyyy-MM-dd HH24:mi:ss' ), to_timestamp( concat ( '2022-01-01', ' 23:00:00' ), 'yyyy-mm-dd HH24:mi:ss' ), '1 hours' ) AS T 
ORDER BY
HOUR ASC;

同理,可獲取某個(gè)月的所有天數(shù)據(jù)

SELECT
		to_char( T, 'yyyy-mm-dd' ) AS day
FROM
		generate_series ( to_date('2022-11', 'yyyy-MM'), (date_trunc('month', to_date('2022-11', 'yyyy-MM')) + interval '1 month - 1 day')::date, '1 days' ) AS T

同理,可獲取某年的所有月份數(shù)據(jù)(上面寫過相似的方法)

SELECT
	to_char( T, 'yyyy-MM' ) AS MONTH 
FROM
	generate_series ( to_date( concat ( '2022', '-01-01' ), 'yyyy-MM-dd' ), to_date( concat ( '2022', '-12-31' ), 'yyyy-MM-dd' ), '1 month' ) AS T 
ORDER BY
MONTH ASC

獲取時(shí)間之間的秒差

SELECT round(date_part('epoch', TIMESTAMP '2022-08-15 17:00:10' - TIMESTAMP '2022-08-15 17:00:00'));
結(jié)果:10

獲取時(shí)間之間的分鐘差

SELECT round(date_part('epoch', TIMESTAMP '2022-08-15 17:10:10' - TIMESTAMP '2022-08-15 17:00:00')/60);
結(jié)果:10

獲取時(shí)間之間的小時(shí)差

SELECT round(date_part('epoch', TIMESTAMP '2022-08-15 19:10:10' - TIMESTAMP '2022-08-15 17:00:00')/60/60);
結(jié)果:2

總結(jié) 

到此這篇關(guān)于postgresql查詢今天、昨天、本周、本月、上月、今年、去年的時(shí)間以及計(jì)算時(shí)間之差的文章就介紹到這了,更多相關(guān)pgSql查詢時(shí)間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PostgreSQL 實(shí)現(xiàn)將多行合并轉(zhuǎn)為列

    PostgreSQL 實(shí)現(xiàn)將多行合并轉(zhuǎn)為列

    這篇文章主要介紹了PostgreSQL 實(shí)現(xiàn)將多行合并轉(zhuǎn)為列的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 在postgresql數(shù)據(jù)庫中創(chuàng)建只讀用戶的操作

    在postgresql數(shù)據(jù)庫中創(chuàng)建只讀用戶的操作

    這篇文章主要介紹了在postgresql數(shù)據(jù)庫中創(chuàng)建只讀用戶的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL的 archive_mode 參數(shù)配置示例詳解

    PostgreSQL的 archive_mode 參數(shù)配置示例詳解

    本文詳細(xì)介紹了PostgreSQL的archive_mode參數(shù),包括其三個(gè)選項(xiàng)(off、on、always)的對比和使用場景,以及在不同模式下的配置和行為特點(diǎn),感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • PostgreSQL 刪除check約束的實(shí)現(xiàn)

    PostgreSQL 刪除check約束的實(shí)現(xiàn)

    這篇文章主要介紹了PostgreSQL 刪除check約束的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 詳解PostgreSql數(shù)據(jù)庫對象信息及應(yīng)用

    詳解PostgreSql數(shù)據(jù)庫對象信息及應(yīng)用

    這篇文章主要介紹了PostgreSql數(shù)據(jù)庫對象信息及應(yīng)用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • PostgreSQL表名超長踩坑記

    PostgreSQL表名超長踩坑記

    本文介紹了PostgreSQL表名最長長度為63個(gè)字符,而非常見的256或512個(gè)字符,并以刪除過期日志表為例,詳細(xì)描述了表名被截?cái)鄨?zhí)行導(dǎo)致誤刪的問題及其解決方法
    2026-05-05
  • PostgreSQL建立自增主鍵的2種方法總結(jié)

    PostgreSQL建立自增主鍵的2種方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于PostgreSQL建立自增主鍵的2種方法,PostgreSQL主鍵自增是一種自動(dòng)增長的機(jī)制,可以為表中的每一行記錄分配唯一的標(biāo)識(shí)符,需要的朋友可以參考下
    2023-09-09
  • 使用PostgreSQL數(shù)據(jù)庫建立用戶畫像系統(tǒng)的方法

    使用PostgreSQL數(shù)據(jù)庫建立用戶畫像系統(tǒng)的方法

    這篇文章主要介紹了使用PostgreSQL數(shù)據(jù)庫建立用戶畫像系統(tǒng),下面使用一個(gè)具體的例子來說明如何使用PostgreSQL的json數(shù)據(jù)類型來建立用戶標(biāo)簽數(shù)據(jù),需要的朋友可以參考下
    2022-10-10
  • 在PostgreSQL中實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)清理和過期清理

    在PostgreSQL中實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)清理和過期清理

    在 PostgreSQL 中,可以通過多種方式實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)清理和過期處理,以確保數(shù)據(jù)庫不會(huì)因?yàn)榇鎯?chǔ)過多過時(shí)或不再需要的數(shù)據(jù)而導(dǎo)致性能下降和存儲(chǔ)空間浪費(fèi),本文給大家介紹了一些常見的方法及詳細(xì)示例,需要的朋友可以參考下
    2024-07-07
  • postgresql中時(shí)間轉(zhuǎn)換和加減操作

    postgresql中時(shí)間轉(zhuǎn)換和加減操作

    這篇文章主要介紹了postgresql中時(shí)間轉(zhuǎn)換和加減操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論

闽侯县| 本溪| 东至县| 陆丰市| 扎兰屯市| 漳平市| 漾濞| 河津市| 眉山市| 福州市| 长治市| 鸡东县| 西和县| 宁化县| 牟定县| 黔东| 广元市| 乌兰县| 石狮市| 新田县| 轮台县| 启东市| 大新县| 聂拉木县| 图片| 尼木县| 丰顺县| 肇源县| 元朗区| 墨玉县| 临澧县| 泗阳县| 深水埗区| 大竹县| 长葛市| 上蔡县| 房山区| 胶州市| 正安县| 揭阳市| 泰宁县|