更新时间:2024-12-06 GMT+08:00

日期与时间数据类型

表1 日期与时间数据类型

MySQL数据库

GaussDB数据库

差异

DATE

支持,存在差异

GaussDB支持date数据类型,与MySQL相比规格上存在如下差异:

反斜杠\在MySQL和GaussDB中都视为转义,但MySQL支持\0,GaussDB暂不支持,因此反斜杠作为分隔符且分隔符后为字符0时GaussDB会报错。

DATETIME[(fsp)]

支持,存在差异

GaussDB支持datetime数据类型,与MySQL相比规格上存在如下差异:

反斜杠\在MySQL和GaussDB中都视为转义,但MySQL支持\0,GaussDB暂不支持,因此反斜杠作为分隔符且分隔符后为字符0时GaussDB会报错。

TIMESTAMP[(fsp)]

支持,存在差异

GaussDB支持timestamp数据类型,与MySQL相比规格上存在如下差异:

  • 反斜杠\在MySQL和GaussDB中都视为转义,但MySQL支持\0,GaussDB暂不支持,因此反斜杠作为分隔符且分隔符后为字符0时GaussDB会报错。
  • MySQL 5.7中timestamp列默认有default value,为数据插入时的实时时间。GaussDB与MySQL 8.0一致,均不设置默认值,即插入null时,值为null。

TIME[(fsp)]

支持,存在差异

GaussDB支持time数据类型,与MySQL相比规格上存在如下差异:

  • 反斜杠\在MySQL和GaussDB中都视为转义,但MySQL支持\0,GaussDB暂不支持,因此反斜杠作为分隔符且分隔符后为字符0时GaussDB会报错。
  • 当时间类型的时、分、秒、纳秒为0时,GaussDB和MySQL可能存在符号位不同的情况。

YEAR[(4)]

支持,存在差异

GaussDB支持year数据类型,与MySQL相比规格上存在如下差异:

创建year类型的字段,和mysql显示有所不同,GaussDB显示year,MySQL显示year(4):

-- GaussDB场景
m_db=# CREATE TABLE t_year (c_year year);
CREATE TABLE
m_db=# DESC t_year;
 Field  | Type | Null | Key | Default | Extra 
--------+------+------+-----+---------+-------
 c_year | year | YES  |     |         | 
(1 row)
m_db=# CREATE TABLE t1 AS(SELECT * FROM t_year);
INSERT 0 0
m_db=# DESC t1;
 Field  | Type | Null | Key | Default | Extra 
--------+------+------+-----+---------+-------
 c_year | year | YES  |     |         | 
(1 row)
-- MySQL场景
mysql> CREATE TABLE t_year (c_year year);
Query OK, 0 rows affected (0.01 sec)
mysql> DESC t_year;
+--------+---------+------+-----+---------+-------+
| Field  | Type    | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| c_year | year(4) | YES  |     | NULL    |       |
+--------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
mysql> CREATE TABLE t1 AS(SELECT * FROM t_year);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC t1;
+--------+---------+------+-----+---------+-------+
| Field  | Type    | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| c_year | year(4) | YES  |     | NULL    |       |
+--------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
  • GaussDB不支持ODBC语法的字面量:

    { d 'str' }

    { t 'str' }

    { ts 'str' }

  • GaussDB支持标准SQL字面量,且类型关键字后面可选择添加精度,MySQL不支持:

    DATE[(n)] 'str'

    TIME[(n)] 'str'

    TIMESTAMP[(n)] 'str'

  • 当指定DATETIME、TIME、TIMESTAMP数据类型的精度超过其支持的最大精度时,GaussDB会将精度截断成支持的最大精度,MySQL则会报错。