日期与时间数据类型
数据类型 |
与MySQL的差异 |
---|---|
DATE |
无差异。 |
DATETIME[(fsp)] |
具体差异请参见表格下方说明中的内容。 |
TIMESTAMP[(fsp)] |
GaussDB支持timestamp数据类型,与MySQL相比规格上存在如下差异:
|
TIME[(fsp)] |
GaussDB支持TIME数据类型,与MySQL相比规格上存在如下差异:
|
YEAR[(4)] |
GaussDB支持YEAR数据类型,与MySQL相比规格上存在如下差异: MySQL 5.7中YEAR列默认显示为YEAR(4)。GaussDB与MySQL 8.0一致,只显示YEAR。 |

- 当指定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属性。