
# datetrunc
datetrunc函数用于计算将日期date按照datepart指定的时间单位进行截取后的日期值。
截取datepart之前的部分，除截取的部分外自动填充为默认值。可参考[示例代码]。
#### 命令格式
```
datetrunc (string date, string datepart)
```
#### 参数说明
表1参数说明 
| 参数       | 是否必选 | 参数类型                                                                                                                                                                                                            | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| date     | 是    | DATE 或 STRING | 代表起始日期。 格式为： - yyyy-mm-dd  - yyyy-mm-dd hh:mi:ss  - yyyy-mm-dd hh:mi:ss.ff3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| datepart | 是    | STRING                                                                                                                                                                                                          | 代表需要返回的时间单位。 参数datepart支持扩展的日期格式：年-year、月-month或-mon、日-day和小时-hour。 - yyyy代表年份。  - mm代表月份。  - dd代表天。  - hh代表小时。  - mi代表分钟。  - ss代表秒。   |
   
#### 返回值说明
返回DATE或STRING类型的日期值。
![](https://support.huaweicloud.com/sqlref-spark-aidatalake/public_sys-resources/note_3.0-zh-cn.png)
- date非DATE或STRING类型时，返回报错，错误信息：data type mismatch；
- date为DATE或STRING类型，但不符合日期值的入参格式时，返回NULL；
- datepart值为NULL时，返回NULL。
- 当datepart指定为时（hh）、分（mi）、秒（ss）时，按天（DD）级别截取返回。
 
 #### 示例代码
静态数据示例
- 示例1：
  ```
  select datetrunc('2023-08-14 17:00:00', 'yyyy');
  ```
  返回2023-01-01 00:00:00。
  
- 示例2：
  ```
  select datetrunc('2023-08-14 17:00:00', 'month');
  ```
  返回2023-08-01 00:00:00。
  
- 示例3：
  ```
  select datetrunc('2023-08-14 17:00:00', 'DD');
  ```
  返回2023-08-14 00:00:00。
  
- 示例4：
  ```
  select datetrunc('2023-08-14', 'yyyy');
  ```
  返回2023-01-01。
  
- 示例5：
  ```
  select datetrunc('2023-08-14 17:11:11', 'hh');
  ```
  返回2023-08-14 17:00:00。
  
- 示例6：
  ```
  select datetrunc('2023-08-14', null);
  ```
  返回NULL。
  
 
