YEAR_FLOOR
描述
用于将给定的日期向下取整到指定的年份间隔起点。它支持多个变体,可按不同方式 指定起始时间 (origin) 和周期 (period) 进行取整。
语法
YEAR_FLOOR(<date_value>, [<period> | <origin_date_value>])
YEAR_FLOOR(<date_value>, <period>, <origin_date_value>)
参数
参数 | 类型 | 说明 |
---|---|---|
<date_value> | DATE , DATETIME | 需要取整的 DATE 或 DATETIME 输入值。 |
<origin_date_value> | DATE , DATETIME | 用作基准的 DATE 或 DATETIME 输入值,如果不填,默认值为 0001-01-01T00:00:00 。 |
<period> | INT | 取整的时间间隔,正整数,表示以多少年为周期进行取整。 |
举例
-
按整年取整
SELECT YEAR_FLOOR('2023-07-13 22:28:18');
+----------------------------------------------------------+ | year_floor(cast('2023-07-13 22:28:18' as DATETIMEV2(0))) | +----------------------------------------------------------+ | 2023-01-01 00:00:00 | +----------------------------------------------------------+
SELECT YEAR_FLOOR('2023-07-13');
+-------------------------------------------------+ | year_floor(cast('2023-07-13' as DATETIMEV2(0))) | +-------------------------------------------------+ | 2023-01-01 00:00:00 | +-------------------------------------------------+
-
以 origin 为基准取整
SELECT YEAR_FLOOR('2023-07-13 22:28:18', '2020-03-15');
+-----------------------------------------------------------------------------------------------+ | year_floor(cast('2023-07-13 22:28:18' as DATETIMEV2(0)), cast('2020-03-15' as DATETIMEV2(0))) | +-----------------------------------------------------------------------------------------------+ | 2023-03-15 00:00:00 | +-----------------------------------------------------------------------------------------------+
-
以 period 为单位取整
SELECT YEAR_FLOOR('2023-07-13', 5);
+----------------------------------------------------+ | year_floor(cast('2023-07-13' as DATETIMEV2(0)), 5) | +----------------------------------------------------+ | 2020-01-01 00:00:00 | +----------------------------------------------------+
-
以 origin 和 period 取整
SELECT YEAR_FLOOR('2023-07-13 22:28:18', 5, '2018-06-01');
+--------------------------------------------------------------------------------------------------+ | year_floor(cast('2023-07-13 22:28:18' as DATETIMEV2(0)), 5, cast('2018-06-01' as DATETIMEV2(0))) | +--------------------------------------------------------------------------------------------------+ | 2023-06-01 00:00:00 | +--------------------------------------------------------------------------------------------------+
SELECT YEAR_FLOOR('2023-07-13', 5, '2016-01-01');
+-----------------------------------------------------------------------------------------+ | year_floor(cast('2023-07-13' as DATETIMEV2(0)), 5, cast('2016-01-01' as DATETIMEV2(0))) | +-----------------------------------------------------------------------------------------+ | 2021-01-01 00:00:00 | +-----------------------------------------------------------------------------------------+