WEEKS

功能概述

返回从 1970-01-01 到指定日期经过的完整周数,即距 1970-01-01 的天数除以 7 后向下取整。主要用作分区转换函数

PARTITIONED BY (weeks(<col>))
PARTITIONED BY (weeks(<col>))
,让表按周分区;也可以在查询中直接调用,把日期归到同一个周编号下做统计。

与 DAYS、MONTHS、YEARS、HOURS 是同一组分区转换函数。

语法

WEEKS(<expr>)

参数说明

  • <expr>
    <expr>
    :DATE、TIMESTAMP 类型,或可以转换为日期的 STRING。

返回 INT 类型。

使用示例

SELECT weeks(DATE '1970-01-01') AS w0, weeks(DATE '1970-01-07') AS w0_end, weeks(DATE '1970-01-08') AS w1, weeks(DATE '2023-02-16') AS w2023;

w0w0_endw1w2023
0012772

2023-02-16 距 1970-01-01 共 19404 天,19404 / 7 = 2772。

建表时按周分区:

CREATE TABLE IF NOT EXISTS doc_weekly_events (id INT, event_date DATE) PARTITIONED BY (weeks(event_date)); INSERT INTO doc_weekly_events VALUES (1, DATE '2023-02-16'), (2, DATE '2023-02-20'); SELECT id, event_date, weeks(event_date) AS week_no FROM doc_weekly_events ORDER BY id;

idevent_dateweek_no
12023-02-162772
22023-02-202772

2023-02-16(星期四)和 2023-02-20(星期一)落在同一个分区,因为分区边界从星期四开始。

注意事项

  • 周边界从星期四开始,与自然周不同。
  • 用作分区转换时,查询条件直接写原始列(如
    WHERE event_date >= '2023-02-16'
    WHERE event_date >= '2023-02-16'
    ),系统会自动裁剪分区。

相关文档

联系我们
预约咨询
微信咨询
电话咨询
邮件咨询