GBase 8a通过date_trunc函数,将日期指定精度位置以后的部分截断。本文介绍该函数各种参数的使用样例。
目录导航
参考
GBase 8a日期函数date_part和extract的介绍和使用样例
语法
date_trunc(type,date)
- type 截断的精度位置。低于该精度的截断。
- date 日期,一般是datetime类型。如果是date类型会自动转成datetime
其中type类型,支持不带引号和带引号两种写法,比如 year和'year'都支持。
Type类型 | 说明 | date_part/extract | date_trunc |
---|---|---|---|
year | 年 | 日期中的年的部分。请注意区分isoyear。 | 年以下的设置为01-01 00:00:00 |
year_month | 年月 | 返回年和月 | 不支持 |
quarter | 季度 | 返回属于第几个季度。 1:01-01 - 03-31 2:04-01 - 06-30 3:07-01 - 09-30 4:10-01 - 12-31 | 日期所在季度的第一天,时间部分为00:00:00 |
month | 月 | 日期中的月份 | 日期所在月的第一天,时间部分为00:00:00 |
week | 周 | 日期所在当年的第几周 | 日期所在周的周一,时间部分为00:00:00 |
day | 日 | 日期中的日 | 日期的时间部分设置为00:00:00 |
day_hour | 日,小时 | 日期中的日和小时 | 不支持 |
day_minute | 日、小时、分 | 日期中的日、小时和分 | 不支持 |
day_second | 日、小时、分、秒 | 日期中的日、小时、分和秒 | 不支持 |
hour | 小时 | 日期中的小时部分 | 小时以下设置为00:00 |
hour_minute | 小时、分钟 | 日期中的小时、分钟部分 | 不支持 |
hour_second | 小时、分、秒 | 日期中的小时、分种、表部分 | 不支持 |
minute | 分钟 | 日期中的分钟部分 | 分钟以下的设置为0 |
minute_second | 分钟、秒 | 日期中的分、秒部分 | 不支持 |
second | 秒 | 日期中的秒 | 秒以下设置为0 |
millisecond | 毫秒 | 日期中的毫秒部分 | 不支持 |
microsecond | 微秒 | 日期中的微秒部分 | 不支持 |
day_microsecond | 天、小时、分、秒、微秒 | 日期中的天、小时、分、秒、微秒部分。 注意格式为ddhhmmssXXXXXX | 不支持 |
hour_microsecond | 小时、分、秒、微秒 | 日期中的小时、分、秒、微秒部分。 注意格式为hhmmssXXXXXX | 不支持 |
minute_microsecond | 分、秒、微秒 | 日期中的分、秒、微秒部分。 注意格式为mmssXXXXXX | 不支持 |
second_microsecond | 秒、微秒 | 日期中的秒、微秒部分。 注意格式为ssXXXXXX | 不支持 |
Century | 世纪 | 该日期所在的世纪。以百年为单位,整百年为上一世纪。 0001-0100 第1世纪 0101-2000 第2世纪 ... 2021-2100 第21世纪 | 该日期所在世纪的第一天 |
decade | 十年 | 年份的10取整。比如2023年算202个10年。 | 日期所在10年的第一天。时间为0 |
dow | 周的第几天0-6 | 日期是所在周的第几天。周日为0,周一为1,周六为6 注意和isodow的区别 | 不支持 |
doy | 年的第几天 | 日期是当前的第几天 | 不支持 |
epoch | 带微秒的时间戳 | extract支持,与unix_timestamp类似,多了微秒部分(如果有的话) 1682046733.56789 | 不支持 |
isodow | 周的第几天1-7 | 日期是所在周的第几天。周一为1,周六为6,周日为7 注意和dow的区别 | 不支持 |
isoyear | 日期落在iso8601周编号的年 | 按照iso8601编号,每年第一个周四所在的周作为该年的第一周。买年最后一个周四所在的周作为该年的最后一周。所以年初,年末的日期,可能是上一年或者下一年的。 注意和year的区别。 | 不支持 |
millennium | 千年 | 当前年份是第几个千年 0001-1000 为第1个千年 1001-2000 为第2个千年 2001-3000 为第3个千年 ... | 所在千年第一日,时间为00:00:00 |
milliseconds | 秒,毫秒 | 返回时间中的秒和毫秒部分 | 毫秒以下设置为0 |
microseconds | 秒,微秒 等同于second_microsecond | 返回秒,微秒部分。 注意格式为ssXXXXXX | 微秒以下设置为0 |
year
年的第一天,年已下为 01-01 00:00:00
参数是否有双引号均可,后面的例子不再重复。
gbase> select date_trunc(year,'2023-04-21 11:12:13.56789');
+----------------------------------------------+
| date_trunc(year,'2023-04-21 11:12:13.56789') |
+----------------------------------------------+
| 2023-01-01 00:00:00 |
+----------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> select date_trunc('year','2023-04-21 11:12:13.56789');
+------------------------------------------------+
| date_trunc('year','2023-04-21 11:12:13.56789') |
+------------------------------------------------+
| 2023-01-01 00:00:00 |
+------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
quarter
日期所在季度的第一天,时间部分为00:00:00
gbase> select date_trunc(quarter,'2023-04-21 11:12:13.56789');
+-------------------------------------------------+
| date_trunc(quarter,'2023-04-21 11:12:13.56789') |
+-------------------------------------------------+
| 2023-04-01 00:00:00 |
+-------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
month
日期所在月的第一天,时间部分为00:00:00
gbase> select date_trunc(month,'2023-04-21 11:12:13.56789');
+-----------------------------------------------+
| date_trunc(month,'2023-04-21 11:12:13.56789') |
+-----------------------------------------------+
| 2023-04-01 00:00:00 |
+-----------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
week
日期所在周的周一,时间部分为00:00:00。 每年的第一周所在周一可能在上一年度。
gbase> select date_trunc(week,'2023-04-21 11:12:13.56789');
+----------------------------------------------+
| date_trunc(week,'2023-04-21 11:12:13.56789') |
+----------------------------------------------+
| 2023-04-17 00:00:00 |
+----------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> select date_trunc(week,'2023-01-1 11:12:13.56789');
+---------------------------------------------+
| date_trunc(week,'2023-01-1 11:12:13.56789') |
+---------------------------------------------+
| 2022-12-26 00:00:00 |
+---------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
day
日期的时间部分设置为00:00:00
gbase> select date_trunc(day,'2023-04-21 11:12:13.56789');
+---------------------------------------------+
| date_trunc(day,'2023-04-21 11:12:13.56789') |
+---------------------------------------------+
| 2023-04-21 00:00:00 |
+---------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
hour
小时以下设置为00:00
gbase> select date_trunc(hour,'2023-04-21 11:12:13.56789');
+----------------------------------------------+
| date_trunc(hour,'2023-04-21 11:12:13.56789') |
+----------------------------------------------+
| 2023-04-21 11:00:00 |
+----------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
minute
分钟以下设置为00
gbase> select date_trunc(minute,'2023-04-21 11:12:13.56789');
+------------------------------------------------+
| date_trunc(minute,'2023-04-21 11:12:13.56789') |
+------------------------------------------------+
| 2023-04-21 11:12:00 |
+------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase>
second
秒以下的设置为0
gbase> select date_trunc(second,'2023-04-21 11:12:13.56789');
+------------------------------------------------+
| date_trunc(second,'2023-04-21 11:12:13.56789') |
+------------------------------------------------+
| 2023-04-21 11:12:13 |
+------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
century
该日期所在世纪的第一天
gbase> select date_trunc(century,'2023-04-21 11:12:13.56789');
+-------------------------------------------------+
| date_trunc(century,'2023-04-21 11:12:13.56789') |
+-------------------------------------------------+
| 2001-01-01 00:00:00 |
+-------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
decade
日期所在10年的第一天,时间为0
gbase> select date_trunc(decade,'2023-04-21 11:12:13.56789');
+------------------------------------------------+
| date_trunc(decade,'2023-04-21 11:12:13.56789') |
+------------------------------------------------+
| 2020-01-01 00:00:00 |
+------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
millennium
日期所在千年的第一天
gbase> select date_trunc(millennium,'2023-04-23 11:12:13.56789');
+----------------------------------------------------+
| date_trunc(millennium,'2023-04-23 11:12:13.56789') |
+----------------------------------------------------+
| 2001-01-01 00:00:00 |
+----------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
milliseconds
将日期的毫秒以下设置为0
gbase> select date_trunc(milliseconds,'2023-04-23 11:12:13.56789');
+------------------------------------------------------+
| date_trunc(milliseconds,'2023-04-23 11:12:13.56789') |
+------------------------------------------------------+
| 2023-04-23 11:12:13.567000 |
+------------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
microseconds
微秒,等同于second_mircrosecond
gbase> select date_trunc(microseconds,'2023-04-23 11:12:13.56789');
+------------------------------------------------------+
| date_trunc(microseconds,'2023-04-23 11:12:13.56789') |
+------------------------------------------------------+
| 2023-04-23 11:12:13.567890 |
+------------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)