date_trunc:日期截断
速查结论
date_trunc(fmt, ts) 是 Spark SQL 中用于将时间戳 ts 截断到 fmt 指定的单位的函数。
语法
date_trunc(fmt, ts)
参数说明
| 参数 | 说明 |
|---|---|
| fmt | 表示要截断到的单位的格式:"YEAR"、"YYYY"、"YY" - 截断到 ts 所在的年份的第一天,时间部分将被清零;"QUARTER" - 截断到 ts 所在的季度的第一天,时间部分将被清零;"MONTH"、"MM"、"MON" - 截断到 ts 所在的月份的第一天,时间部分将被清零;"WEEK" - 截断到 ts 所在的一周的星期一,时间部分将被清零;"DAY"、"DD" - 清零时间部分;"HOUR" - 清零分钟、秒和毫秒部分;"MINUTE" - 清零秒和毫秒部分;"SECOND" - 清零毫秒部分;"MILLISECOND" - 清零微秒部分;"MICROSECOND" - 保持不变。 |
| ts | 日期时间值或有效的时间戳字符串。 |
Examples
> SELECT date_trunc('YEAR', '2015-03-05T09:32:05.359');
2015-01-01 00:00:00
> SELECT date_trunc('MM', '2015-03-05T09:32:05.359');
2015-03-01 00:00:00
> SELECT date_trunc('DD', '2015-03-05T09:32:05.359');
2015-03-05 00:00:00
> SELECT date_trunc('HOUR', '2015-03-05T09:32:05.359');
2015-03-05 09:00:00
> SELECT date_trunc('MILLISECOND', '2015-03-05T09:32:05.123456');
2015-03-05 09:32:05.123
常见报错与避坑指南
- fmt 参数大小写:fmt 参数对大小写不敏感,
'YEAR'、'year'和'Year'等效。但为保持代码风格一致,建议全大写。 - WEEK 截断的起始日:
'WEEK'截断至所在周的星期一,而非星期日。这与 dayofweek 函数(1=星期日)的周起始日不同,注意区分。
Since: 2.3.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
