
# time_format
#### time_format(time, fmt)
描述：time_format函数将日期参数按照fmt指定的格式转换为字符串。与date_format函数类似，但格式字符串只能包含小时、分钟、秒和微秒的格式说明符，如果包含其他说明符则会返回NULL值或0。
返回值类型：text
示例：
```
SELECT time_format('2009-10-04 22:23:00', '%M %D %W');
    time_format
--------------------
 
(1 row)
SELECT time_format('2021-02-20 08:30:45', '%Y-%m-%d %H:%i:%S');
     time_format
---------------------
 0000-00-00 08:30:45
(1 row)
SELECT time_format('2021-02-20 18:10:15', '%r-%T');
     time_format
----------------------
 06:10:15 PM-18:10:15
(1 row)
```
![](https://support.huaweicloud.com/devg-fabric/public_sys-resources/notice_3.0-zh-cn.png)
time_format仅支持时间相关的格式输出（%f、%H、%h、%I、%i、%k、%l、%p、%r、%S、%s、%T），不支持日期相关格式，其他情况处理为普通字符。
#### str_to_date(str, format)
描述：将日期/时间格式的字符串（str），按照所提供的显示格式（format）转换为日期类型的值。
返回值类型：timestamp
示例：
```
SELECT str_to_date('01,5,2021','%d,%m,%Y');
     str_to_date
---------------------
 2021-05-01 00:00:00
(1 row)
SELECT str_to_date('01,5,2021,09,30,17','%d,%m,%Y,%h,%i,%s');
     str_to_date
---------------------
 2021-05-01 09:30:17
(1 row)
```
适用于str_to_date的格式化输入的格式类型参考[表1](https://support.huaweicloud.com/devg-fabric/dataartsfabric_sql_04_0212.html#ZH-CN_TOPIC_0000002449510032__table17541102011)。这里仅支持"日期"格式、"日期+时间"格式的输入转换，对于仅"时间"格式的输入场景请使用str_to_time。
#### str_to_time(str, format)
描述：将时间格式的字符串（str），按照所提供的显示格式（format）转换为时间类型的值。
返回值类型：time
示例：
```
SELECT str_to_time('09:30:17','%h:%i:%s');
 str_to_time
-------------
 09:30:17
(1 row)
```
适用于str_to_time的格式化输入的格式类型参考[表1](https://support.huaweicloud.com/devg-fabric/dataartsfabric_sql_04_0212.html#ZH-CN_TOPIC_0000002449510032__table17541102011)，这里仅支持"时间"格式的输入转换，对于"日期"格式、"日期+时间"格式的输入场景请使用str_to_date。
#### week(date\[, mode\])
描述：根据模式返回指定日期时间所处年份中对应的周数，默认模式为0。
返回值类型：integer
表1week函数中mode模式的工作原理 
| 模式 | 一周的第一天 | 周数范围 | 第一周的判断规则       |
|:---|:---|:---|:---|
| 0  | 星期日    | 0-53 | 元旦后的第一个星期日所在周  |
| 1  | 星期一    | 0-53 | 元旦后有四天或者更多天所在周 |
| 2  | 星期日    | 1-53 | 元旦后的第一个星期日所在周  |
| 3  | 星期一    | 1-53 | 元旦后有四天或者更多天所在周 |
| 4  | 星期日    | 0-53 | 元旦后有四天或者更多天所在周 |
| 5  | 星期一    | 0-53 | 元旦后的第一个星期一所在周  |
| 6  | 星期日    | 1-53 | 元旦后有四天或者更多天所在周 |
| 7  | 星期一    | 1-53 | 元旦后的第一个星期一所在周  |
   
示例：
```
select week('2018-01-01');
 week
------
    0
(1 row)
select week('2018-01-01', 0);
 week
------
    0
(1 row)
select week('2020-12-31', 1);
 week
------
   53
(1 row)
select week('2020-12-31', 5);
 week
------
   52
(1 row)
```
#### weekday(date)
描述：返回给定日期date对应的星期索引，星期一作为一周的开始日。
取值范围：0\~6
返回值类型：integer
示例：
```
select weekday('2020-11-06');
 weekday
---------
       4
(1 row)
```
#### weekofyear(date)
描述：返回给定日期date所在周在本年中对应的周数，取值范围为\[1, 53\]，等价于week(date, 3)。
返回值类型：integer
示例：
```
select weekofyear('2020-12-30');
 weekofyear
------------
         53
(1 row)
```
#### year(date)
描述：获取时间日期date所处的年份
返回值类型：integer
示例：
```
select year('2020-11-13');
 year
------
 2020
(1 row)
```
#### yearweek(date\[, mode\])
描述：返回给定日期date在本年中对应的年份和周数，周数范围为\[1, 53\]。
返回值类型：integer
示例：
```
select yearweek('2019-12-31');
 yearweek
----------
   201952
(1 row)
select yearweek('2019-1-1');
 yearweek
----------
   201852
(1 row)
```
