日期时间函数
ADDDATE
- ADDDATE(date, INTERVAL expr unit)
描述:用于在指定的日期上添加一段时间间隔,并返回计算结果。该函数这种形式的功能用法与DATE_ADD函数相同。
参数:具体说明如表1所示。
表1 ADDDATE参数说明 参数
类型
描述
取值范围
date
时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
表示日期时间基准。
和类型范围一致。
expr
整数、浮点数、字符串、表达式等。
表示时间间隔,可以是负值。
和类型范围一致。
unit
关键字。
表示时间间隔的单位。
YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND或MICROSECOND等,具体请参见时间间隔表达式。
示例:
m_db=# SELECT ADDDATE('2018-05-01', INTERVAL 1 DAY); adddate ------------ 2018-05-02 (1 row)
- ADDDATE(date, days)
描述:用于将days指定的天数与date指定的日期相加,返回计算结果。
参数:具体说明如表2所示。
表2 ADDDATE参数说明 参数
类型
描述
取值范围
date
时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
表示日期时间基准。
和类型范围一致
days
整数、浮点数、字符串等。
表示时间间隔,可以是负值。
和类型范围一致
返回值类型:TEXT、DATE、DATETIME或TIME。
示例:
m_db=# SELECT ADDDATE('2018-05-01', 1); adddate ------------ 2018-05-02 (1 row)
ADDTIME
ADDTIME(expr1, expr2)
描述:返回时间或时间日期表达式expr1与时间表达式expr2相加后的值,返回值的格式与expr1保持一致。
- expr1:时间或时间日期表达式。
- expr2:时间表达式。
返回值类型:TEXT、DATETIME或TIME。返回值类型与expr1类型有关,expr1解析为DATETIME,则返回DATETIME,expr1解析为TIME,则返回TIME。
示例:
m_db=# SELECT ADDTIME('2000-03-01 20:59:59', '00:00:01');
addtime
---------------------
2000-03-01 21:00:00
(1 row)
m_db=# SELECT ADDTIME('20:59:59', '00:00:01');
addtime
----------
21:00:00
(1 row)
CONVERT_TZ
CONVERT_TZ(dt, from_tz, to_tz)
描述:CONVERT_TZ函数用于将日期时间值dt从from_tz时区转换到to_tz时区。如果参数dt无效,则返回空。如果dt超出TIMESTAMP类型支持范围,则不会发生转换。
参数:具体说明如表3所示。
|
参数 |
类型 |
描述 |
取值范围 |
|---|---|---|---|
|
dt |
TEXT、DATETIME、DATE、TIME和其他可以隐式转换为DATETIME的类型。 |
表示日期时间值。 |
请参见表1。 |
|
from_tz/to_tz |
±hh:mm格式的字符串。 |
表示相较于UTC时间的偏移,如'+08:00'。 |
[-12:59, +13:00],正负号必须加。 |
|
命名时区。 |
如'MET'、'UTC'等。 |
具体请参见PG_TIMEZONE_NAMES系统视图。 |
返回值类型:DATETIME
示例:
1 2 3 4 5 |
m_db=# SELECT CONVERT_TZ('2023-01-01 10:10:10', '+00:00', '+08:00'); convert_tz --------------------- 2023-01-01 11:10:10 (1 row) |
CURDATE
CURDATE()
描述:返回本地函数调用开始时刻的系统日期。支持在同一连接内修改时区,返回的日期受时区的影响。
返回值类型:DATE
示例:
1 2 3 4 5 |
m_db=# SELECT CURDATE(); curdate ------------ 2023-12-09 (1 row) |
CURRENT_DATE
CURRENT_DATE/CURRENT_DATE()
描述:返回本地函数调用开始时刻的系统日期。支持在同一连接内修改时区,返回的日期受时区的影响。该函数是CURDATE的别名。
返回值类型:DATE
示例:
1 2 3 4 5 6 7 8 9 10 11 |
m_db=# SELECT CURRENT_DATE; current_date -------------- 2023-12-09 (1 row) m_db=# SELECT CURRENT_DATE(); current_date -------------- 2023-12-09 (1 row) |
CURRENT_TIME
CURRENT_TIME/CURRENT_TIME([scale])
描述:返回本地函数调用开始时刻的时间,不含日期的部分。
参数:scale,表示微秒部分的精度,有效值为0到6的整数,默认值为0。
返回值类型:TIME
示例:
1 2 3 4 5 6 7 8 9 10 11 |
m_db=# SELECT CURRENT_TIME; current_time -------------- 10:14:12 (1 row) m_db=# SELECT CURRENT_TIME(6); current_time ----------------- 10:14:15.512064 (1 row) |
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP/CURRENT_TIMESTAMP([scale])
描述:返回本地函数调用开始时刻的日期时间。该函数是NOW的别名。
参数:scale,表示微秒部分的精度,有效值为0到6的整数,默认值为0。
返回值类型:DATETIME
示例:
1 2 3 4 5 6 7 8 9 10 11 |
m_db=# SELECT CURRENT_TIMESTAMP; current_timestamp --------------------- 2023-12-09 11:20:04 (1 row) m_db=# SELECT CURRENT_TIMESTAMP(6); current_timestamp ---------------------------- 2023-12-09 11:20:07.059582 (1 row) |
CURTIME
CURTIME([scale])
描述:返回本地函数调用开始时刻的时间,不含日期的部分。该函数是CURRENT_TIME的别名。
参数:scale,表示微秒部分的精度,有效值为0到6的整数,默认值为0。
返回值类型:TIME
示例:
1 2 3 4 5 6 7 8 9 10 11 |
m_db=# SELECT CURTIME(); curtime ---------- 11:24:03 (1 row) m_db=# SELECT CURTIME(6); curtime ----------------- 11:24:05.590022 (1 row) |
DATE()
DATE(expr)
描述:返回时间或日期表达式expr的日期部分。
参数:expr,可取的类型有TEXT、DATETIME、DATE、TIME、时间或日期表达式等。
返回值类型:DATE
示例:
1 2 3 4 5 |
m_db=# SELECT DATE('2023-01-01 10:11:12'); date ------------ 2023-01-01 (1 row) |
DATE_ADD
DATE_ADD(date, INTERVAL expr unit)
描述:用于在指定的日期上添加一段时间间隔,并返回计算结果。
参数:具体说明如表4所示。
|
参数 |
类型 |
描述 |
取值范围 |
|---|---|---|---|
|
date |
时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。 |
表示日期时间基准。 |
和类型范围一致。 |
|
expr |
整数、浮点数、字符串、表达式等。 |
表示时间间隔,可以是负值。 |
和类型范围一致。 |
|
unit |
关键字。 |
表示时间间隔的单位。 |
YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND或MICROSECOND等,具体请参见时间间隔表达式。 |
返回值类型:TEXT、DATE、DATETIME或TIME。
示例:
m_db=# SELECT DATE_ADD('2018-05-01', INTERVAL 1 DAY);
adddate
------------
2018-05-02
(1 row)
DATE_FORMAT
DATE_FORMAT(date, format)
描述:将日期时间以指定格式输出。
参数:具体说明如表5所示。
|
参数 |
类型 |
描述 |
取值范围 |
|---|---|---|---|
|
date |
时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。 |
需要格式化的日期 |
和类型范围一致。 |
|
format |
TEXT。 |
格式化字符串 |
具体信息如表6所示。 |
|
格式符 |
含义 |
|---|---|
|
%a |
星期的缩写(Sun..Sat)。 |
|
%b |
月份的缩写(Jan..Dec)。 |
|
%c |
月份数字(0..12)。 |
|
%D |
带有英语前缀的月份中的每天(0th, 1st, 2nd, 3rd, …)。 |
|
%d |
月份中的每天的两位数字表示(00..31)。 |
|
%e |
月份中的每天的数字表示(0..31)。 |
|
%f |
微秒(000000..999999)。 |
|
%H |
小时(00..23)。 |
|
%h |
小时(01..12)。 |
|
%I |
小时(01..12)。 |
|
%i |
分钟(00..59)。 |
|
%j |
一年中的每天(001..366)。 |
|
%k |
小时(0..23)。 |
|
%l |
小时(1..12)。 |
|
%M |
月份名称(January..December)。 |
|
%m |
两位数字月份(00..12)。 |
|
%p |
AM或者PM。 |
|
%r |
十二小时制时间(hh:mm:ss后跟AM或PM)。 |
|
%S |
秒(00..59)。 |
|
%s |
秒(00..59)。 |
|
%T |
二十四小时制时间(hh:mm:ss)。 |
|
%U |
一年中的星期(00..53),每周的开始是星期天。 |
|
%u |
一年中的星期(00..53),每周的开始是星期一。 |
|
%V |
一年中的星期(01..53),每周的开始是星期天。 |
|
%v |
一年中的星期(01..53),每周的开始是星期一。 |
|
%W |
星期的名称(Sunday..Saturday)。 |
|
%w |
星期中的每天(0=星期天..6=星期六)。 |
|
%X |
一年中的星期,每周的开始是星期天,四位数字,用于%V。 |
|
%x |
一年中的星期,每周的开始是星期一,四位数字,用于%v。 |
|
%Y |
四位数字年份。 |
|
%y |
两位数字年份。 |
|
%% |
文字字符%。 |
|
%x |
x,对于以上未列出的任何"x"。 |
返回值类型:TEXT
示例:
m_db=# SELECT DATE_FORMAT('2023-10-11 12:13:14.151617','%b %c %M %m');
date_format
-------------------
Oct 10 October 10
(1 row)
DATE_SUB
DATE_SUB(date, INTERVAL expr unit)
描述:用于在指定的日期上减去一段时间间隔,并返回计算结果。
参数:具体说明如表7所示。
|
参数 |
类型 |
描述 |
取值范围 |
|---|---|---|---|
|
date |
时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。 |
表示日期时间基准。 |
和类型范围一致。 |
|
expr |
整数、浮点数、字符串、表达式等。 |
表示时间间隔,可以是负值。 |
和类型范围一致。 |
|
unit |
关键字。 |
表示时间间隔的单位。 |
YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND或MICROSECOND等,具体请参见时间间隔表达式。 |
返回值类型:TEXT、DATE、DATETIME或TIME。
示例:
m_db=# SELECT DATE_SUB('2018-05-01', INTERVAL 1 DAY);
date_sub
------------
2018-04-30
(1 row)
DATEDIFF
DATEDIFF(date1, date2)
描述:返回date1和date2之间的天数。计算中只用到参数的日期部分,忽略时间部分。
参数:
- date1:时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
- date2:时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:INT
示例:
m_db=# SELECT DATEDIFF('2018-05-01', '2018-04-01');
datediff
----------
30
(1 row)
DAY
DAY(date)
描述:提取日期时间的天数部分,将结果返回。该函数是DAYOFMONTH的别名。
参数:date,表示指定提取的日期时间,可以是时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:INT
示例:
m_db=# SELECT DAY('2018-05-12');
day
-----
12
(1 row)
DAYNAME
DAYNAME(date)
描述:返回日期的星期几名称。返回值使用的语言由GUC参数lc_time_names控制。
参数:date,表示日期时间,可以是时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:TEXT
示例:
m_db=# SELECT DAYNAME('2018-05-12');
dayname
----------
Saturday
(1 row)
DAYOFMONTH
DAYOFMONTH(date)
描述:提取日期时间的天数部分,将结果返回。该函数是DAY的别名。
参数:date,表示指定提取的日期时间,可以是时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:INT
示例:
m_db=# SELECT DAYOFMONTH('2018-05-12');
dayofmonth
------------
12
(1 row)
DAYOFWEEK
DAYOFWEEK(date)
描述:返回日期的工作日索引(1=周日,2=周一,…,7=周六)。
参数:date,表示日期时间,可以是时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:BIGINT
示例:
m_db=# SELECT DAYOFWEEK('2023-04-16');
dayofweek
-----------
1
(1 row)
DAYOFYEAR
DAYOFYEAR(date)
描述:返回一年中的第几天。
参数:date,表示日期时间,可以是时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:INT,范围[1, 366]。
示例:
m_db=# SELECT DAYOFYEAR('2000-12-31');
dayofyear
-----------
366
(1 row)
EXTRACT
EXTRACT(unit FROM date)
描述:以整数类型返回date的unit指定部分值。如果unit指定多个部分,则将所有的值按顺序拼接。
参数:
- unit:表示时间间隔单位,具体请参见时间间隔表达式。
- date:表示日期时间,可以是时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:BIGINT
示例:
m_db=# SELECT EXTRACT(DAY FROM '2000-12-31');
extract
---------
31
(1 row)
m_db=# SELECT EXTRACT(WEEK FROM '2000-12-31');
extract
---------
53
(1 row)
m_db=# SELECT EXTRACT(YEAR_MONTH FROM '2000-12-31');
extract
---------
200012
(1 row)
FROM_DAYS
FROM_DAYS(days)
描述:返回指定天数days对应的日期值。天数指距离“0000-01-01”的天数。
参数:days,指定的天数。
返回值类型:DATE
示例:
m_db=# SELECT FROM_DAYS(50000); from_days ------------ 0136-11-23 (1 row)
FROM_UNIXTIME
FROM_UNIXTIME(unix_timestamp[, format])
描述:将Unix时间戳转换为日期时间格式的函数。Unix时间戳是指从1970年1月1日08:00:00 UTC到指定时间的秒数。
参数:
- unix_timestamp:表示UNIX时间戳。
- format:返回指定格式的日期时间字符串。
具体返回指定格式请参见DATE_FORMAT函数。
返回值类型:TEXT/DATETIME
示例:
m_db=# SELECT FROM_UNIXTIME(1111885200);
from_unixtime
---------------------
2005-03-27 09:00:00
(1 row)
m_db=# SELECT FROM_UNIXTIME(1447430881, '%Y %D %M %h:%i:%s %x');
from_unixtime
----------------------------------
2015 14th November 12:08:01 2015
(1 row)
GET_FORMAT
GET_FORMAT({DATE | TIME | DATETIME | TIMESTAMP}, {'EUR' | 'USA' | 'JIS' | 'ISO' | 'INTERNAL'})
描述:返回指定格式的字符串,即不同地区的“年月日 时分秒”格式和排序标准。
参数:
- DATE | TIME | DATETIME | TIMESTAMP:表示时间类型,为关键字。
- 'EUR' | 'USA' | 'JIS' | 'ISO' | 'INTERNAL':五种时间格式,TEXT类型。
返回值类型:TEXT
示例:
m_db=# SELECT GET_FORMAT(DATE, 'EUR'); get_format ------------ %d.%m.%Y (1 row) m_db=# SELECT GET_FORMAT(DATE, 'USA'); get_format ------------ %m.%d.%Y (1 row)
HOUR
HOUR(expr)
描述:返回时间或日期时间表达式expr中的的小时部分的数值。
参数:time,表示时间,可以是时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:INT
示例:
m_db=# SELECT HOUR('10:11:12');
hour
------
10
(1 row)
LAST_DAY
LAST_DAY(date)
描述:返回日期时间date当月最后一天的日期值。
参数:date,表示日期时间,可以是时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:DATE
示例:
m_db=# SELECT LAST_DAY('2023-01-01');
last_day
------------
2023-01-31
(1 row)
m_db=# SELECT LAST_DAY('2023-01-01 10:11:12');
last_day
------------
2023-01-31
(1 row)
LOCALTIME
LOCALTIME/LOCALTIME([scale])
描述:返回本地函数调用开始时刻的日期时间。LOCALTIME和LOCALTIME()是NOW的同义词。
参数:scale,表示微秒部分的精度,有效值为0到6的整数,默认值为0。
返回值类型:DATETIME
示例:
m_db=# SELECT LOCALTIME;
localtime
---------------------
2023-12-09 17:58:18
(1 row)
m_db=# SELECT LOCALTIME(6);
localtime
----------------------------
2023-12-09 17:58:21.283227
(1 row)
LOCALTIMESTAMP
LOCALTIMESTAMP/LOCALTIMESTAMP([scale])
描述:返回当前的日期时间。LOCALTIMESTAMP和LOCALTIMESTAMP()是NOW的同义词。
参数:scale,表示微秒部分的精度,有效值为0到6的整数,默认值为0。
返回值类型:DATETIME
示例:
m_db=# SELECT LOCALTIMESTAMP;
localtimestamp
---------------------
2023-12-09 18:00:34
(1 row)
m_db=# SELECT LOCALTIMESTAMP(6);
localtimestamp
----------------------------
2023-12-09 18:01:03.053427
(1 row)
MAKEDATE
MAKEDATE(year, dayofyear)
描述:根据年份和天数值返回日期。
参数:
- year:BIGINT,指定的年份。
- dayofyear:BIGINT,该年的第若干天,允许跨年,小于等于0时返回NULL。
返回值类型:DATE
示例:
m_db=# SELECT MAKEDATE(2000, 60); makedate ------------ 2000-02-29 (1 row)
MAKETIME
MAKETIME(hour, minute, second)
描述:通过入参hour、minute、second生成指定的时间值。
参数:
- hour:小时部分对应的数值。
- minute:分钟部分对应的数值。
- second:秒数部分对应的数值,可以有小数部分。
返回值类型:TIME
示例:
1 2 3 4 5 6 7 8 9 10 11 |
m_db=# SELECT MAKETIME(8, 15, 26.53); maketime ------------- 08:15:26.53 (1 row) m_db=# SELECT MAKETIME(-838, 15, 26.53); maketime --------------- -838:15:26.53 (1 row) |
MICROSECOND
MICROSECOND(expr)
描述:返回时间或日期时间表达式expr的微秒数。
参数:expr,可取的类型有TEXT、DATETIME、DATE、TIME、时间或日期表达式等。
返回值类型:BIGINT
示例:
m_db=# SELECT MICROSECOND('2023-5-5 10:10:10.24485');
microsecond
-------------
244850
(1 row)
MINUTE
MINUTE(expr)
描述:返回时间或日期时间表达式expr中的分钟数。
参数:expr,可取的类型有TEXT、DATETIME、DATE、TIME、时间或日期表达式等。
返回值类型:INT
示例:
m_db=# SELECT MINUTE('10:11:12');
minute
--------
11
(1 row)
MONTH
MONTH(date)
描述:提取日期时间的月份部分,将结果返回。
参数:date,表示指定提取的日期时间,可以是时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:INT
示例:
m_db=# SELECT MONTH('2018-05-12');
month
-------
5
(1 row)
MONTHNAME
MONTHNAME(date)
描述:返回日期的月份全名称。
参数:date,表示日期时间,可以是时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:TEXT
示例:
m_db=# SELECT MONTHNAME('2018-05-12');
monthname
-----------
May
(1 row)
NOW
NOW([scale])
描述:返回本地函数调用开始时刻的日期时间,受时区设置的影响。
参数:scale,表示微秒部分的精度,有效值为0到6的整数,默认值为0。
返回值类型:DATETIME
示例:
m_db=# SELECT NOW();
now
---------------------
2023-12-11 09:46:56
(1 row)
m_db=# SELECT NOW(6);
now
---------------------------
2023-12-11 09:46:58.404811
(1 row)
PERIOD_ADD
PERIOD_ADD(period, month_number)
描述:在指定格式的日期上添加指定的月数,并按照YYYYMM格式进行返回。
参数:
- period:使用YYYYMM或YYMM格式表示的日期。
- month_number:需要添加的月数,允许为负数。
返回值类型:BIGINT。
示例:
m_db=# SELECT PERIOD_ADD(202205, -12);
period_add
------------
202105
(1 row)
PERIOD_DIFF
PERIOD_DIFF(P1, P2)
描述:计算两个日期的月份差。
参数:P1和P2均为YYMM或YYYYMM格式的日期。
返回值类型:BIGINT,月份差。
示例:
m_db=# SELECT PERIOD_DIFF('202101', '202102');
period_diff
-------------
-1
(1 row)
QUARTER
QUARTER(date)
描述:返回指定日期的季度值,取值范围为[1, 4]。
参数:date,表示指定的日期时间,可以是时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:INT
示例:
m_db=# SELECT QUARTER('2018-05-12');
quarter
---------
2
(1 row)
SEC_TO_TIME
SEC_TO_TIME(seconds)
描述:将seconds表示的秒数转换为TIME类型的时间。
参数:seconds,指定的秒数,取值范围[-3020399, +3020399]。
返回值类型:TIME
示例:
m_db=# SELECT SEC_TO_TIME(3020399); sec_to_time ------------- 838:59:59 (1 row)
SECOND
SECOND(expr)
描述:返回时间或日期时间表达式expr中的秒数。
参数:expr,表示时间,可以是时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:INT
示例:
m_db=# SELECT SECOND('10:11:12');
second
--------
12
(1 row)
STR_TO_DATE
STR_TO_DATE(str, format)
描述:将指定的字符串根据指定日期格式转为日期或时间。
参数:
- str:需要格式化成日期的字符串。
- format:格式化字符串,详见表6。
返回值类型:DATETIME、DATE、TIME。
示例:
m_db=# SELECT STR_TO_DATE('May 1, 2013','%M %d,%Y');
str_to_date
-------------
2013-05-01
(1 row)
SUBDATE
- SUBDATE(date, INTERVAL expr unit)
描述:用于在指定的日期上减去一段时间间隔,并返回计算结果。该函数这种形式的功能用法与DATE_SUB函数相同。
参数:具体说明如表8所示。
表8 SUBDATE参数说明 参数
类型
描述
取值范围
date
时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
表示日期时间基准。
和类型范围一致。
expr
整数、浮点数、字符串、表达式等。
表示时间间隔,可以是负值。
和类型范围一致。
unit
关键字。
表示时间间隔的单位。
YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND或MICROSECOND等,具体请参见时间间隔表达式。
返回值类型:TEXT、DATE、DATETIME或TIME。
示例:
m_db=# SELECT SUBDATE('2018-05-01', INTERVAL 1 DAY); subdate ------------ 2018-04-30 (1 row)
- SUBDATE(date, days)
描述:用于将days指定的天数与date指定的日期相减,返回计算结果。
参数:具体说明如表9所示。
表9 SUBDATE参数说明 参数
类型
描述
取值范围
date
时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
表示日期时间基准。
和类型范围一致
days
整数、浮点数、字符串等。
表示时间间隔,可以是负值。
和类型范围一致
返回值类型:TEXT、DATE、DATETIME或TIME。
示例:
m_db=# SELECT SUBDATE('2018-05-01', 1); subdate ------------ 2018-04-30 (1 row)
SUBTIME
SUBTIME(expr1, expr2)
描述:返回时间或时间日期表达式expr1与时间表达式expr2相减后的值,返回值的格式与expr1保持一致。
- expr1:时间或时间日期表达式。
- expr2:时间表达式。
返回值类型:TEXT、DATETIME或TIME。返回值类型与expr1类型有关,expr1解析为DATETIME,则返回DATETIME,expr1解析为TIME,则返回TIME。
示例:
m_db=# SELECT SUBTIME('2000-03-01 20:59:59', '00:00:01');
subtime
---------------------
2000-03-01 20:59:58
(1 row)
m_db=# SELECT SUBTIME('20:59:59', '00:00:01');
subtime
----------
20:59:58
(1 row)
SYSDATE
SYSDATE([precision])
描述:返回函数执行时刻的系统日期和时间。
参数:precision,表示微秒部分的精度,有效值为0到6的整数,默认值为0。
返回值类型:DATETIME
示例:
1 2 3 4 5 6 7 8 9 10 11 |
m_db=# SELECT SYSDATE(); sysdate --------------------- 2023-12-11 11:28:29 (1 row) m_db=# SELECT SYSDATE(6); sysdate ---------------------------- 2023-12-11 11:28:31.535374 (1 row) |
TIME
TIME(expr)
描述:返回时间或日期表达式expr的时间部分。
参数:expr,可取的类型有TEXT、DATETIME、DATE、TIME、时间或日期表达式等。
返回值类型:TIME
示例:
1 2 3 4 5 |
m_db=# SELECT TIME('2023-01-01 10:11:12'); time ---------- 10:11:12 (1 row) |
TIME_FORMAT
TIME_FORMAT(time, format)
描述:根据格式说明符format格式化time入参。
参数:
- time:时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
- format:格式化字符串,具体取值和含义如表10所示。
表10 格式化字符串 格式符
含义
%f
微秒(000000至999999)。
%H
小时(00到23)。
%h、%I
小时(00到12)。
%l
小时(0到12)。
%k
小时(0到838)。
%i
分钟(00至59)。
%p
AM or PM。
%r
时间为12小时AM或PM格式(hh:mm:ss AM / PM)。
%S、%s
秒(00到59)。
%T
24小时格式的时间(hh:mm:ss)。
%a、%b、%D、%j、%M、%U、%u、%V、%v、%W、%w、%X、%x
NULL。
%c、%e
0。
%d、%m、%y
00。
%Y
0000。
%其他字符/其他字符,如%A/A
返回字符本身,如A。
%单个字符+字符串s
解析(%单个字符),拼接s。
返回值类型:TEXT
示例:
m_db=# SELECT TIME_FORMAT('25:30:30', '%T|%r|%H|%h|%I|%i|%S|%f|%p|%k');
time_format
--------------------------------------------------
25:30:30|01:30:30 AM|25|01|01|30|30|000000|AM|25
(1 row)
TIME_TO_SEC
TIME_TO_SEC(time)
描述:将TIME类型入参转化为秒数。
参数:time,时间类型表达式、TEXT、DATETIME、DATE或TIME等类型。时间表达式按照TIME来解析。
返回值类型:INT
示例:
m_db=# SELECT TIME_TO_SEC('10:11:12');
time_to_sec
-------------
36672
(1 row)
TIMEDIFF
TIMEDIFF(date1, date2)
描述:以TIME类型返回两个日期的时间间隔。
参数:date1或date2,时间类型表达式、TEXT、DATETIME、DATE或TIME等类型。
返回值类型:TIME
示例:
m_db=# SELECT TIMEDIFF(date'2022-12-30',20221229); timediff ---------- 24:00:00 (1 row)
TIMESTAMP
- TIMESTAMP(expr)
参数:时间类型表达式、TEXT、DATETIME、DATE或TIME等类型。
返回值类型:DATETIME
示例:
m_db=# SELECT TIMESTAMP('2022-12-30'); timestamp --------------------- 2022-12-30 00:00:00 (1 row)
TIMESTAMPADD
TIMESTAMPADD(unit, interval, datetime_expr)
描述:返回一个新的日期时间,该日期时间是通过将unit的多个interval添加到datetime_expr计算得到的。
参数:具体说明如表11所示。
|
参数 |
类型 |
描述 |
取值范围 |
|---|---|---|---|
|
unit |
关键字。 |
时间间隔单位 |
YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND、MICROSECOND。 |
|
interval |
数值表达式。 |
时间间隔数值 |
和类型范围一致。 |
|
datetime_expr |
时间类型表达式、TEXT、DATETIME、DATE或TIME等类型。 |
时间日期基准值 |
和类型范围一致。 |
返回值类型:TEXT、DATE、DATETIME或TIME。
示例:
m_db=# SELECT TIMESTAMPADD(DAY,-2,'2022-07-27'); timestampadd -------------- 2022-07-25 (1 row)
TIMESTAMPDIFF
TIMESTAMPDIFF(unit, date1, date2)
描述:以unit为单位返回两个日期时间的间隔。
参数:具体说明如表12所示。
|
参数 |
类型 |
描述 |
取值范围 |
|---|---|---|---|
|
unit |
关键字。 |
时间间隔单位 |
YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND、MICROSECOND。 |
|
date1 |
时间类型表达式、TEXT、DATETIME、DATE或TIME等类型。 |
表示日期时间 |
和类型范围一致。 |
|
date2 |
时间类型表达式、TEXT、DATETIME、DATE或TIME等类型。 |
表示日期时间 |
和类型范围一致。 |
返回值类型:BIGINT
示例:
m_db=# SELECT TIMESTAMPDIFF(SECOND, '2023-01-01 10:11:12', '2023-01-01 05:00:00');
timestampdiff
---------------
-18672
(1 row)
TO_DAYS
TO_DAYS(date)
描述:返回指定日期距离“0000-01-01”的天数。
参数:入参为时间类型表达式、TEXT、DATETIME、DATE或TIME等类型。时间表达式按照DATE来解析。
返回值类型:INT
示例:
m_db=# SELECT TO_DAYS('2000-1-1');
to_days
---------
730485
(1 row)
TO_SECONDS
TO_SECONDS(expr)
描述:返回时间或日期时间表达式expr自公元零年以来的秒数。
参数:入参为时间或日期时间表达式、TEXT、DATETIME、DATE或TIME等类型。时间表达式按照DATETIME来解析。
返回值类型:BIGINT
示例:
m_db=# SELECT TO_SECONDS('2009-11-29 13:43:32');
to_seconds
-------------
63426721412
(1 row)
UNIX_TIMESTAMP
UNIX_TIMESTAMP([date])
描述:
- 不指定date参数时,返回当前时间距离“1970-01-01 00:00:00”的秒数,受时区参数设置的影响。
- 指定参数date参数时,返回指定时间距离“1970-01-01 00:00:00”的秒数,受时区参数设置的影响。
参数:时间类型表达式、TEXT、DATETIME、DATE或TIME等类型。
返回值类型:DECIMAL/BIGINT。当入参存在小数部分或者入参为非法的时间类型字符串时,返回DECIMAL,否则返回BIGINT。
示例:
m_db=# SELECT UNIX_TIMESTAMP('2022-12-22');
unix_timestamp
----------------
1671638400
(1 row)
UTC_DATE
UTC_DATE/UTC_DATE()
描述:将函数执行时的当前UTC日期作为“YYYY-MM-DD”格式的值返回。
返回值类型:DATE
示例:
m_db=# SELECT UTC_DATE; utc_date ------------ 2023-12-11 (1 row) m_db=# SELECT UTC_DATE(); utc_date ------------ 2023-12-11 (1 row)
UTC_TIME
UTC_TIME/UTC_TIME([scale])
描述:将函数执行时的当前UTC时间作为“HH:MM:SS”格式的值返回。
参数:scale,表示微秒部分的精度,有效值为0到6的整数,默认值为0。
返回值类型:TIME
示例:
m_db=# SELECT UTC_TIME;
utc_time
----------
07:10:49
(1 row)
m_db=# SELECT UTC_TIME();
utc_time
----------
07:10:49
(1 row)
m_db=# SELECT UTC_TIME(6);
utc_time
-----------------
07:10:51.445213
(1 row)
UTC_TIMESTAMP
UTC_TIMESTAMP/UTC_TIMESTAMP([scale])
描述:将函数执行时的当前UTC时间戳作为“YYYY-MM-DD HH:MM:SS”格式的值返回。
参数:scale,表示微秒部分的精度,有效值为0到6的整数,默认值为0。
返回值类型:DATETIME
示例:
m_db=# SELECT UTC_TIMESTAMP;
utc_timestamp
---------------------
2023-12-11 07:12:02
(1 row)
m_db=# SELECT UTC_TIMESTAMP();
utc_timestamp
---------------------
2023-12-11 07:12:04
(1 row)
m_db=# SELECT UTC_TIMESTAMP(3);
utc_timestamp
-------------------------
2023-12-11 07:12:06.413
(1 row)
WEEK
WEEK(date[, mode])
描述:返回日期的周数。周数根据ISO 8601:1988计算,在ISO定义里,一月份的前几天可能是前一年的第52或者第53周,十二月份的后几天可能是下一年的第1周。
参数:
- date:指定日期时间,时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
- 当省略mode参数时,使用系统变量default_week_format的值,默认值为0。当指定mode参数时,可以指定一周的开始,以及返回值的范围。可选参数mode的含义如表13所示,默认值为0。
返回值类型:BIGINT
示例:
m_db=# SELECT WEEK('2000-01-01');
week
------
0
(1 row)
m_db=# SELECT WEEK('2000-01-01', 2);
week
------
52
(1 row)
WEEKDAY
WEEKDAY(date)
描述:返回一个日期的工作日索引值,即星期一为0,星期二为1,星期三为2,星期四为3,星期五为4,星期六为5,星期日为6。
参数:时间类型表达式、TEXT、DATETIME、DATE或TIME等类型。
返回值类型:INT
示例:
m_db=# SELECT WEEKDAY('1970-01-01 12:00:00');
weekday
---------
3
(1 row)
WEEKOFYEAR
WEEKOFYEAR(date)
描述:返回日期时间的日历周,范围[1, 53]。与WEEK(date, 3)功能相同。
参数:时间类型表达式、TEXT、DATETIME、DATE或TIME等类型。
返回值类型:INT
示例:
m_db=# SELECT WEEKOFYEAR('1970-05-22');
weekofyear
------------
21
(1 row)
YEAR
YEAR(date)
描述:提取日期时间的年份部分,将结果返回。
参数:date,表示指定提取的日期时间,可以是时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
返回值类型:INT。
示例:
m_db=# SELECT YEAR('2018-05-12');
year
------
2018
(1 row)
YEARWEEK
YEARWEEK(date[, mode])
描述:返回日期的年份和周数。
参数:
- date:指定日期时间,时间类型表达式、TEXT、DATETIME、DATE、TIME等类型。
- 可选参数mode,具体请参见表13。
返回值类型:BIGINT
示例:
m_db=# SELECT YEARWEEK('2000-01-01', 3);
yearweek
----------
199952
(1 row)