更新日期:2024年09月11日
函数说明
将字符串string 格式化成format 类型的日期。
表5- 25 参数说明
格式化参数
含
义
-
,
.
:
/
空格
一般作为参数string 的分隔符号使用,不论使用何种分隔符号,
格式化输出的格式都是以
“-”
作为分隔符的。
因为GBase 8a MPP
Cluster 的日期格式就是ISO 的格式。
注意:string 和FORMAT 两个参数必须使用一致的分隔符。
YYYY/YY
YYYY 对应1~4 位数字,YY 对应1~2 位数字。
注意:YYYY 或YY 的值不能为空。
如果FORMAT 参数没有指定YYYY 或者YY,默认为本年,与
NOW()返回的年一致。
如果string 和FORMAT 都是“YY-MM-DD”格式,则返回结果,
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
820
格式化参数
含
义
年补足4 位,年的前两位是NOW()函数中年的前2 位数值。
如果string 是
“YY-MM-DD”
格式,
而format 是
“YYYY-MM-DD”
格式,则返回结果,年也补足4 位,但是年的前两位是用“00”
补足。
年的范围:0~9999。
MM
如果string 参数不包含月MM,则format 参数默认返回NOW()
函数中月对应的数值。
DD
如果string 参数不包含日DD,则format 参数默认返回为1 日。
DDD
一年中的第N 天。参数string 必须给定年和天数,FORMAT 参数
使用YYYY DDD 的形式,系统便能计算出对应的日期。
HH、
HH12、
HH24
格式化小时。
如果string 参数中小时部分超过12,则FORMAT 参数中的HH,
必须使用HH24,否则会报错。
AM
上午的简写,按照上午的12 小时区间,格式化小时。
注意:不要使用HH12 或者HH24 格式,
string 和FORMAT 两个参数必须同时指定AM 或者PM。
如果string 和FORMAT 两个参数指定的AM 或者PM 不一致,
则
以string 参数指定的是AM 还是PM,进行格式化输出。
PM
下午的简写,按照下午的12 小时区间,格式化小时。
注意:不要使用HH12 或者HH24 格式,
string 和FORMAT 两个参数必须同时指定AM 或者PM。
如果string 和FORMAT 两个参数指定的AM 或者PM 不一致,
则
以string 参数指定的是AM 还是PM,进行格式化输出。
MI
分钟。
如果string 和FORMAT 参数中省略MI,则返回分钟为0。
SS
秒。
如果string 和FORMAT 参数中省略SS,则返回秒为0。
示例
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
821
示例1:不论string 和format 使用何种分隔符,格式化输出的格式都是以“-”作
为分隔符。
gbase> SELECT TO_DATE('2020-04-15','YYYY-MM-DD') FROM dual;
+------------------------------------+
| TO_DATE('2020-04-15','YYYY-MM-DD') |
+------------------------------------+
| 2020-04-15
|
+------------------------------------+
1 row in set
gbase> SELECT TO_DATE('2020/04/15','YYYY/MM/DD') FROM dual;
+------------------------------------+
| TO_DATE('2020/04/15','YYYY/MM/DD') |
+------------------------------------+
| 2020-04-15
|
+------------------------------------+
1 row in set
gbase> SELECT TO_DATE('2020,04,15','YYYY,MM,DD') FROM dual;
+------------------------------------+
| TO_DATE('2020,04,15','YYYY,MM,DD') |
+------------------------------------+
| 2020-04-15
|
+------------------------------------+
1 row in set
gbase> SELECT TO_DATE('2020:4:15','YYYY:MM:DD') FROM dual;
+-----------------------------------+
| TO_DATE('2020:4:15','YYYY:MM:DD') |
+-----------------------------------+
| 2020-04-15
|
+-----------------------------------+
1 row in set
gbase> SELECT TO_DATE('2020.4.15','YYYY.MM.DD') FROM dual;
+-----------------------------------+
| TO_DATE('2020.4.15','YYYY.MM.DD') |
+-----------------------------------+
| 2020-04-15
|
+-----------------------------------+
1 row in set
gbase> SELECT TO_DATE('2020 4 14','YYYY MM DD') FROM dual;
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
822
+-----------------------------------+
| TO_DATE('2020 4 14','YYYY MM DD') |
+-----------------------------------+
| 2020-04-14
|
+-----------------------------------+
1 row in set
示例2:如果string 中没有指定年,则返回本年,与NOW()返回的年一致。
gbase> SELECT TO_DATE('4-15','MM-DD'),NOW() FROM dual;
+-------------------------+---------------------+
| TO_DATE('4-15','MM-DD') | NOW()
|
+-------------------------+---------------------+
| 2020-04-15
| 2020-04-01 17:44:46 |
+-------------------------+---------------------+
1 row in set
如果string 和format 都是“YY-MM-DD”
格式,
则返回结果中的“年”
补足4 位。
gbase> SELECT TO_DATE('20-4-15','YY-MM-DD') FROM dual;
+-------------------------------+
| TO_DATE('20-4-15','YY-MM-DD') |
+-------------------------------+
| 2020-04-15
|
+-------------------------------+
1 row in set
如果string 是“YY-MM-DD”格式,而format 是“YYYY-MM-DD”格式,返回
结果中的年补足4 位,但是年的前两位是用“00”补足。
gbase> SELECT TO_DATE('20-04-15','YYYY-MM-DD') FROM dual;
+----------------------------------+
| TO_DATE('20-04-15','YYYY-MM-DD') |
+----------------------------------+
| 0020-04-15
|
+----------------------------------+
1 row in set
示例3:如果string 参数不包含月MM,则format 参数默认返回NOW()函数中月
对应的数值。
gbase> SELECT TO_DATE('2020-04-15','YYYY-MM-DD') FROM dual;
+------------------------------------+
| TO_DATE('2020-04-15','YYYY-MM-DD') |
+------------------------------------+
| 2020-04-15
|
+------------------------------------+
1 row in set
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
823
gbase> SELECT TO_DATE('2020-15','YYYY-DD') FROM dual;
+------------------------------+
| TO_DATE('2020-15','YYYY-DD') |
+------------------------------+
| 2020-04-15
|
+------------------------------+
1 row in set
示例4:如果string 参数不包含日DD,则format 参数默认返回1。
gbase> SELECT TO_DATE('2020-4-15','YYYY-MM-DD') FROM dual;
+-----------------------------------+
| TO_DATE('2020-4-15','YYYY-MM-DD') |
+-----------------------------------+
| 2020-04-15
|
+-----------------------------------+
1 row in set
gbase> SELECT TO_DATE('2020-4','YYYY-MM') FROM dual;
+-----------------------------+
| TO_DATE('2020-4','YYYY-MM') |
+-----------------------------+
| 2020-04-01
|
+-----------------------------+
1 row in set
示例5:返回一年中的第N 天对应的日期。
gbase> SELECT TO_DATE('2020
218','YYYY DDD') FROM dual;
+---------------------------------+
| TO_DATE('2020
218','YYYY DDD') |
+---------------------------------+
| 2020-08-05
|
+---------------------------------+
1 row in set
gbase> SELECT TO_DATE('2020
55','YYYY DDD') FROM dual;
+--------------------------------+
| TO_DATE('2020
55','YYYY DDD') |
+--------------------------------+
| 2020-02-24
|
+--------------------------------+
1 row in set
gbase> SELECT TO_DATE('2020 366','YYYY DDD') FROM dual;
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
824
+--------------------------------+
| TO_DATE('2020 366','YYYY DDD') |
+--------------------------------+
| 2020-12-31
|
+--------------------------------+
1 row in set
示例6:返回12 小时制和24 小时制的时间。
gbase> SELECT TO_DATE('2020-4-15 12:15:10','YYYY-MM-DD
HH:MI:SS') FROM dual;
+-----------------------------------------------------+
| TO_DATE('2020-4-15 12:15:10','YYYY-MM-DD HH:MI:SS') |
+-----------------------------------------------------+
| 2020-04-15 12:15:10
|
+-----------------------------------------------------+
1 row in set
gbase> SELECT TO_DATE('2020-4-15 12:15:10','YYYY-MM-DD
HH12:MI:SS') FROM dual;
+-------------------------------------------------------+
| TO_DATE('2020-4-15 12:15:10','YYYY-MM-DD HH12:MI:SS') |
+-------------------------------------------------------+
| 2020-04-15 12:15:10
|
+-------------------------------------------------------+
1 row in set
gbase> SELECT TO_DATE('2020-4-15 12:15:10','YYYY-MM-DD
HH24:MI:SS') FROM dual;
+-------------------------------------------------------+
| TO_DATE('2020-4-15 12:15:10','YYYY-MM-DD HH24:MI:SS') |
+-------------------------------------------------------+
| 2020-04-15 12:15:10
|
+-------------------------------------------------------+
1 row in set
小时部分超过12,必须使用HH24,否则报错。
gbase> SELECT TO_DATE('2020-4-14 13:00:00','YYYY-MM-DD
HH:MI:SS') FROM dual;
ERROR 1708 (HY000): [172.168.83.12:5050](GBA-02AD-0005)Failed to query
in gnode:
DETAIL: incorrect parameter in function to_date.
SQL: SELECT /*172.168.83.11_238_174_2020-04-01_18:54:11*/ /*+
TID('196780') */ to_date('2020-4-14 13:00:00', 'YYYY-MM-DD HH:MI:SS') AS
`to_date('2020-4-14 13:00:00','yyyy-mm-dd hh:mi:ss')` FROM `gclusterdb`.`dual`
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
825
`vcname000001.gclusterdb.dual`
小时部分超过12,使用HH24 后,顺利格式化输出。
gbase> SELECT TO_DATE('2020-4-14 13:00:00','YYYY-MM-DD
HH24:MI:SS') FROM dual;
+-------------------------------------------------------+
| TO_DATE('2020-4-14 13:00:00','YYYY-MM-DD HH24:MI:SS') |
+-------------------------------------------------------+
| 2020-04-14 13:00:00
|
+-------------------------------------------------------+
1 row in set
下面的示例,用来说明GBase 8a MPP Cluster 的TO_DATE()函数灵活性。
gbase> SELECT TO_DATE('2020 1111','YYYY MISS') FROM dual;
+----------------------------------+
| TO_DATE('2020 1111','YYYY MISS') |
+----------------------------------+
| 2020-04-01 00:11:11
|
+----------------------------------+
1 row in set
示例7:string 和format 两个参数同时指定AM 或者PM。
gbase> SELECT TO_DATE('2020-4-15 8:15:20 AM','YYYY-MM-DD
HH:MI:SS AM') FROM dual;
+----------------------------------------------------------+
| TO_DATE('2020-4-15 8:15:20 AM','YYYY-MM-DD HH:MI:SS AM') |
+----------------------------------------------------------+
| 2020-04-15 08:15:20
|
+----------------------------------------------------------+
1 row in set
gbase> SELECT TO_DATE('2020-4-15 8:15:20 PM','YYYY-MM-DD
HH:MI:SS PM') FROM dual;
+----------------------------------------------------------+
| TO_DATE('2020-4-15 8:15:20 PM','YYYY-MM-DD HH:MI:SS PM') |
+----------------------------------------------------------+
| 2020-04-15 20:15:20
|
+----------------------------------------------------------+
1 row in set
如果string 和format 两个参数指定的AM 或者PM 不一致,则以string 参数指定
的是AM 还是PM,进行格式化输出。
gbase> SELECT TO_DATE('2020-4-15 8:15:20 AM','YYYY-MM-DD
HH:MI:SS PM') FROM dual;
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
826
+----------------------------------------------------------+
| TO_DATE('2020-4-15 8:15:20 AM','YYYY-MM-DD HH:MI:SS PM') |
+----------------------------------------------------------+
| 2020-04-15 08:15:20
|
+----------------------------------------------------------+
1 row in set
gbase> SELECT TO_DATE('2020-4-15 8:15:20PM','YYYY-MM-DD
HH:MI:SS AM') FROM dual;
+---------------------------------------------------------+
| TO_DATE('2020-4-15 8:15:20PM','YYYY-MM-DD HH:MI:SS AM') |
+---------------------------------------------------------+
| 2020-04-15 20:15:20
|
+---------------------------------------------------------+
1 row in set
示例8:比较NOW()和TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD
HH:MI:SS'),'YYYY-MM-DD HH:MI:SS')。
gbase> SELECT NOW(),TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD
HH:MI:SS'),'YYYY-MM-DD HH:MI:SS') AS f_format FROM dual;
+---------------------+---------------------+
| NOW()
| f_format
|
+---------------------+---------------------+
| 2020-04-01 18:57:18 | 2020-04-01 06:57:18 |
+---------------------+---------------------+
1 row in set
TO_CHAR()省略掉分钟。
gbase> SELECT NOW(),TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD
HH:SS'),'YYYY-MM-DD HH:SS') AS f_format FROM dual;
+---------------------+---------------------+
| NOW()
| f_format
|
+---------------------+---------------------+
| 2020-04-01 18:57:34 | 2020-04-01 06:00:34 |
+---------------------+---------------------+
1 row in set
示例9:比较NOW()和TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD
HH:MI:SS'),'YYYY-MM-DD HH:MI:SS')。
gbase> SELECT NOW(),TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD
HH:MI:SS'),'YYYY-MM-DD HH:MI:SS') AS f_format FROM dual;
+---------------------+---------------------+
| NOW()
| f_format
|
+---------------------+---------------------+
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
827
| 2020-04-01 18:57:46 | 2020-04-01 06:57:46 |
+---------------------+---------------------+
1 row in set
TO_CHAR()省略掉秒。
gbase> SELECT NOW(),TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD
HH:MI'),'YYYY-MM-DD HH:MI') AS f_format FROM dual;
+---------------------+---------------------+
| NOW()
| f_format
|
+---------------------+---------------------+
| 2020-04-01 18:57:57 | 2020-04-01 06:57:00 |
+---------------------+---------------------+
1 row in set
4 |
| demo.tt
| demo
| tt
|
| 2020-07-29 18:31:39.3360
00 | 2020-07-29 18:31:41.430000 | COMPLETED |
100 |
5
| 172.168.83.14 |
4 |
+------------+---------+------------+----------+----------------------------+-------------------
---------+-----------+------------+----------+---------------+-----------------+
3 rows in set (Elapsed: 00:00:00.03)
gbase> quit
Bye