• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Clickhouse获取本周的最后一天、本月的最后一天

武飞扬头像
JermeryBesian
帮助1

Clickhouse获取本周的最后一天、本月的最后一天


Clickhouse官网日期函数:

https://clickhouse.com/docs/zh/sql-reference/functions/date-time-functions/#to-unix-timestamp

获取本周的最后一天

在官网给出的日期函数中,给出了计算指定日期所在周的第一天(周一):

toMonday()

将Date或DateTime向前取整到本周的星期一。 返回Date类型。

比如当前日期:

select toMonday(toDate('2022-12-08'));


┌─toMonday(toDate('2022-12-08'))─┐
│                     2022-12-05 │
└────────────────────────────────┘

返回指定日期所在周的周一的日期

获取到指定日期所在周的最后一天的日期(周日)

date_add(DAY, 7-toDayOfWeek(toDate('2022-12-08')), toDate('2022-12-08'))


┌─plus(toDate('2022-12-08'), toIntervalDay(minus(7, toDayOfWeek(toDate('2022-12-08')))))─┐
│                                                                             2022-12-11 │
└────────────────────────────────────────────────────────────────────────────────────────┘

核心思想就是利用toDayOfWeek方法计算出指定所在周的第几天,然后算出到周日的差值,再用date_add方法加上这个差值,就是当前当前日期所在周的周日的日期。

本月的最后一天

在官网给出的日期函数中,给出了计算指定日期所在月的第一天:

toStartOfMonth()

将Date或DateTime向前取整到本月的第一天。 返回Date类型。

比如当前日期:

select toStartOfMonth(toDate('2022-12-08'));


┌─toStartOfMonth(toDate('2022-12-08'))─┐
│                           2022-12-01 │
└──────────────────────────────────────┘

那么如何获取到本月的最后一天呢?

select date_sub(DAY, 1, toStartOfMonth(date_add(MONTH, 1, toDate('2022-12-08'))))

┌─minus(toStartOfMonth(plus(toDate('2022-12-08'), toIntervalMonth(1))), toIntervalDay(1))─┐
│                                                                              2022-12-31 │
└─────────────────────────────────────────────────────────────────────────────────────────┘

核心思想就是,先利用date_add方法计算出当前日期的下一个月所在的日期,然后利用toStartOfMonth方法算出下个月的月初,再利用date_sub方法将下个月月初的日期-1,就得到本月的最后一天所在的日期了。

注意,这里,如果下一个月的日期不存在,比如date_add(MONTH, 1, toDate('2022-10-31'));,11月不存在31号,只会得到2022-11-30:

select date_add(MONTH, 1, toDate('2022-10-31'));

┌─plus(toDate('2022-10-31'), toIntervalMonth(1))─┐
│                                     2022-11-30 │
└────────────────────────────────────────────────┘

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgebiib
系列文章
更多 icon
同类精品
更多 icon
继续加载