GBase 8a从字符串转日期函数to_date的介绍和例子

本文介绍GBaase 8a数据库集群内置的从字符串转日期的函数to_date语法和使用例子,大部分兼容Oracle语法。

语法

TO_DATE(string,format)

说明

将字符串 string 格式化成 format 类型的日期。

参数

如下是支持的参数列表,只兼容部分Oracle的参数。

模板描述
/-:.分隔符,输出的年月日都是-
HH一天的小时数 (01-12)
HH12一天的小时数 (01-12)
HH24一天的小时数 (00-23)
MI分钟 (00-59)
SS秒 (00-59)
AM or A.M. or PM or P.M.正午标识,都是大写
YYYY年(4和更多位)
YY年的后两位
MM月份 (01-12)
DDD一年里的日子(001-366)
DD一个月里的日子(01-31)
FF[n]毫秒,默认是6位精度,1<=n<=9

样例

常用的中文格式:YYYY-MM-DD HH24:MI:SS

gbase> select to_date('2021-02-04 11:15:16','YYYY-MM-DD HH24:MI:SS') d;
+---------------------+
| d                   |
+---------------------+
| 2021-02-04 11:15:16 |
+---------------------+
1 row in set (Elapsed: 00:00:00.00)

带毫秒:YYYY-MM-DD HH24:MI:SS.FF

gbase> select to_date('2021-02-04 11:15:16.987654321','YYYY-MM-DD HH24:MI:SS.FF') d;
+----------------------------+
| d                          |
+----------------------------+
| 2021-02-04 11:15:16.987654 |
+----------------------------+
1 row in set (Elapsed: 00:00:00.00)


gbase> select to_date('2021/02/04 11:15:16.987654321','YYYY/MM/DD HH24:MI:SS.FF') d;
+----------------------------+
| d                          |
+----------------------------+
| 2021-02-04 11:15:16.987654 |
+----------------------------+
1 row in set (Elapsed: 00:00:00.00)

斜杠分隔符

gbase> select to_date('2021/02/04 11:15:16.987654321','YYYY/MM/DD HH24:MI:SS.FF') d;
+----------------------------+
| d                          |
+----------------------------+
| 2021-02-04 11:15:16.987654 |
+----------------------------+
1 row in set (Elapsed: 00:00:00.00)

带AM/PM

小时必须用HH格式,且原始字符串必须带AM/PM字样。否则结果可能错误。

gbase> select to_date('2021-02-04 11:15:16 PM','YYYY-MM-DD HH:MI:SS PM') d;
+---------------------+
| d                   |
+---------------------+
| 2021-02-04 23:15:16 |
+---------------------+
1 row in set (Elapsed: 00:00:00.00)

gbase> select to_date('2021-02-04 11:15:16 PM','YYYY-MM-DD HH:MI:SS AM') d;
+---------------------+
| d                   |
+---------------------+
| 2021-02-04 23:15:16 |
+---------------------+
1 row in set (Elapsed: 00:00:00.00)

2位的年份:YY

默认是当前的20XX年。

gbase> select to_date('21-02-04 11:15:16 PM','YY-MM-DD HH:MI:SS AM') d;
+---------------------+
| d                   |
+---------------------+
| 2021-02-04 23:15:16 |
+---------------------+
1 row in set (Elapsed: 00:00:00.00)

一年内的天数:DDD

gbase> select to_date(123,'DDD');
+--------------------+
| to_date(123,'DDD') |
+--------------------+
| 2021-05-03         |
+--------------------+
1 row in set (Elapsed: 00:00:00.00)

参考

相似功能

GBase 8a数据库函数str_to_date将文本按指定格式转化为日期

反向功能

GBase 8a将日期转字符串to_char函数功能介绍和样例

GBase 8a数据库函数date_format将日期格式化成指定格式的文本

GBase 8a从字符串转日期函数to_date的介绍和例子》有2条评论

  1. 您好,请问一下,8a里面需要把 ‘2021-06-16’格式的转换为’20210616’,除了用concat之外能用上述函数解决吗?

    1. to_date的结果是日期,你需要的是字符串或者数字,比如to_char(now(),’YYYYMMDD’),date_format(now(),’%Y%m%d’) 都可以。

发表评论

您的电子邮箱地址不会被公开。