更新时间:2025-12-17 GMT+08:00
分享

time_format

time_format(time, fmt)

描述:time_format函数将日期参数按照fmt指定的格式转换为字符串。与date_format函数类似,但格式字符串只能包含小时、分钟、秒和微秒的格式说明符,如果包含其他说明符则会返回NULL值或0。

返回值类型:text

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
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)

time_format仅支持时间相关的格式输出(%f、%H、%h、%I、%i、%k、%l、%p、%r、%S、%s、%T),不支持日期相关格式,其他情况处理为普通字符。

str_to_date(str, format)

描述:将日期/时间格式的字符串(str),按照所提供的显示格式(format)转换为日期类型的值。

返回值类型:timestamp

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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。这里仅支持“日期”格式、“日期+时间”格式的输入转换,对于仅“时间”格式的输入场景请使用str_to_time。

str_to_time(str, format)

描述:将时间格式的字符串(str),按照所提供的显示格式(format)转换为时间类型的值。

返回值类型:time

示例:

1
2
3
4
5
SELECT str_to_time('09:30:17','%h:%i:%s');
 str_to_time
-------------
 09:30:17
(1 row)

适用于str_to_time的格式化输入的格式类型参考表1,这里仅支持“时间”格式的输入转换,对于“日期”格式、“日期+时间”格式的输入场景请使用str_to_date。

week(date[, mode])

描述:根据模式返回指定日期时间所处年份中对应的周数,默认模式为0。

返回值类型:integer

表1 week函数中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

元旦后的第一个星期一所在周

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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

示例:

1
2
3
4
5
SELECT weekday('2020-11-06');
 weekday
---------
       4
(1 row)

weekofyear(date)

描述:返回给定日期date所在周在本年中对应的周数,取值范围为[1, 53],等价于week(date, 3)。

返回值类型:integer

示例:

1
2
3
4
5
SELECT weekofyear('2020-12-30');
 weekofyear
------------
         53
(1 row)

year(date)

描述:获取时间日期date所处的年份

返回值类型:integer

示例:

1
2
3
4
5
SELECT year('2020-11-13');
 year
------
 2020
(1 row)

yearweek(date[, mode])

描述:返回给定日期date在本年中对应的年份和周数,周数范围为[1, 53]。

参数说明:

  • date,输入的日期或时间戳。
  • mode,可选参数,整数类型,用于确定周数计算的逻辑,标准的mode取值范围为0~7。参考表1

    该函数支持更广泛的整数mode输入。输入的mode值会按照公式 (mode % 8 + 8) % 8 映射到 0~7 的标准模式范围内。例如,输入8等同于0,输入-1等同于7,输入-2 等同于6。支持输入任意32位整数(如2147483647)。

返回值类型:integer

示例:

返回给定日期对应的年份和周数。

1
2
3
4
5
SELECT yearweek('2019-12-31');
 yearweek
----------
   201952
(1 row)

指定mode值为-2 (-2映射为6),表示周从星期日开始,2024年1月1日(星期一)属于第1周的第二天,2024年1月1日属于第1周。

1
2
3
4
5
SELECT yearweek('2024-1-1', -2);
 yearweek 
----------
   202401
(1 row)

指定mode值为-6 (-6映射为2),表示周从星期三开始,2024年1月1日(星期一)属于上一年的最后一周(即2023年的第53周)。

1
2
3
4
5
SELECT yearweek('2024-1-1', -6);
 yearweek 
----------
   202353
(1 row)

指定mode值为2147483647(2147483647映射为7),表示本年的第一个星期一开始是第一周,2024年1月1日(星期一)属于第1周的第一天,2024年1月1日属于第1周。

1
2
3
4
5
SELECT yearweek('2024-1-1', 2147483647);
 yearweek 
----------
   202401
(1 row)

相关文档