PostgreSQL查询近多少年、多少周、根据日期查询这个周的开始时间和结束时间

迈不过友情╰ 2023-09-25 18:47 59阅读 0赞

一、查询连续年的SQL语句

1、查询连接近20年的sql语句
  1. SELECT tab."year" || '年' as text,tab."year" as code FROM (WITH RECURSIVE T ( n ) AS (
  2. SELECT DATE( now( ) - INTERVAL '20 YEAR' ) UNION ALL
  3. SELECT n + 1 FROM T
  4. WHERE n < DATE ( now( ) ) ) SELECT
  5. to_char( n, 'yyyy' ) AS YEAR FROM T GROUP BY YEAR
  6. ORDER BY YEAR desc) tab
2、查询结果截图

在这里插入图片描述

二、查询某个时间段的周数

1、查询2021-01-01 00:00:00到2021-12-31 23:59:59的周数列表

  1. SELECT tab.times as code,'第'||tab.weeknum||'周' as text FROM (SELECT MIN
  2. ( times ) times,
  3. CAST ( date_part( 'week', times ) AS VARCHAR ) weeknum
  4. FROM
  5. (
  6. SELECT A
  7. times
  8. FROM
  9. generate_series (
  10. ( CAST ( ( '2021' || '-01-01 00:00:00' ) AS TIMESTAMP ) ),
  11. (SELECT CASE
  12. WHEN '2022'=to_char(now(), 'yyyy') THEN
  13. CAST ( to_char( CURRENT_DATE, 'yyyy-MM-dd' ) || ' 23:59:59' AS TIMESTAMP ) + '10 day'
  14. ELSE
  15. CAST ( '2021' || '-12-31 23:59:59' AS TIMESTAMP )
  16. END as b),
  17. '1 day'
  18. ) AS A
  19. ) AS b
  20. GROUP BY
  21. weeknum
  22. ORDER BY
  23. times ASC ) tab
2、结果示例

在这里插入图片描述

三、根据传入的一个时间计算本周的开始时间和结束时间

1、查询2020-01-01 00:00:00时间的按周查询开始时间和结束时间
  1. SELECT
  2. date_trunc( 'week', CAST ( '2020-01-01 00:00:00' AS TIMESTAMP ) ) AS start_time,
  3. date_trunc( 'week', CAST ( '2020-01-01 00:00:00' AS TIMESTAMP ) ) + INTERVAL '6d' AS end_time
2、结果示例

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,59人围观)

还没有评论,来说两句吧...

相关阅读