更新时间:2025-09-09 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支持设置explicit_defaults_for_timestamp ,当explicit_defaults_for_timestamp设置为off时,对TIMESTAMP类型的字段的默认值、插入NULL等处理为非标准行为。MySQL 5.7下,explicit_defaults_for_timestamp默认值为off;MySQL 8.0下,explicit_defaults_for_timestamp默认值为on。GaussDB不支持设置explicit_defaults_for_timestamp,行为与MySQL设置explicit_defaults_for_timestamp为on时的行为一致。explicit_defaults_for_timestamp相关说明参见表格下方内容。

TIME[(fsp)]

支持,存在差异

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

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

YEAR[(4)]

支持

-

  • GaussDB不支持ODBC语法的字面量:

    { d 'str' }

    { t 'str' }

    { ts 'str' }

  • 当给DATETIME、TIME、TIMESTAMP数据类型指定的精度超过其支持的最大精度时,GaussDB会将精度截断成支持的最大精度,MySQL则会报错。
  • MySQL中当explicit_defaults_for_timestamp为off时,对TIMESTAMP类型的字段的处理逻辑如下:
    • 未显式指定NULL/NOT NULL属性的字段,将自动添加NOT NULL属性。向此类字段插入NULL值时,会将NULL值替换为当前时间戳。
    • 如果未给表中的第一个TIMESTAMP类型的字段指定NULL属性,会自动给该字段添加DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP属性。
    • 如果未给表中的第二个及之后的TIMESTAMP类型的字段指定NULL属性,会自动给该字段添加DEFAULT '0000-00-00 00:00:00'属性。
  • MySQL中当explicit_defaults_for_timestamp为on时,对TIMESTAMP类型的字段的处理逻辑如下:
    • 向TIMESTAMP类型的字段插入NULL值时,不会将NULL值替换为当前时间戳。
    • 未显式指定NULL/NOT NULL属性的字段,将自动添加NULL属性。
    • 向指定了NOT NULL属性的字段插入NULL值时,严格模式下报错,宽松模式下将插入'0000-00-00 00:00:00'。
    • 不会为任何TIMESTAMP类型的字段自动添加DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP属性。

相关文档