Navicat establece el valor predeterminado de tiempo (última hora actual)

prefacio

¡El artículo es corto, pero la experiencia es profunda! ! ! !

1. Análisis de principios

Tarea requerida: al completar los datos, si la hora no está escrita, los datos se complementarán con la última hora de forma predeterminada

Al principio, el valor predeterminado de datetime en Navicat se estableció en now(), ¡pero seguía generando un error!
Sabemos que Mysql tiene muchas formas de expresar la hora actual:

  • AHORA()
  • HORA LOCAL
  • HORA LOCAL()
  • LOCALTIMESTAMP
  • LOCALTIMESTAMP()
  • FECHA Y HORA ACTUAL
  • FECHA Y HORA ACTUAL()

Eventualmente solo pasó esto: CURRENT_TIMESTAMP

Si se establece en otro, se produce el siguiente error:
inserte la descripción de la imagen aquí


La forma correcta de configurarlo es la siguiente:
inserte la descripción de la imagen aquí

2. La diferencia entre fecha y hora y marca de tiempo

En el combate real, la fecha y la hora y la marca de tiempo se usan comúnmente, pero también tienen atributos como la hora y la fecha. Las diferencias específicas son las siguientes:

categoría Formato Rangos almacenamiento
año AAAA 1901 a 2155 1 byte
tiempo HH:MM:SS -838:59:59 a 838:59:59 3 bytes
fecha AAAA-MM-DD 1000-01-01 al 9999-12-31 3 bytes
fecha y hora AAAA-MM-DD HH:MM:SS 1000-01-01 00:00:00 al 9999-12-31 23:59:59 8 bytes
marca de tiempo AAAA-MM-DD HH:MM:SS 1970-01-01 00:00:01 a 2038-01-19 03:14:07 (conversión de hora UTC) 4 bytes

Se puede ver que los formatos de fecha y hora y marca de tiempo son los mismos, y el rango de valores no es diferente por ahora

Al operar Navicat, los valores predeterminados de datetime y timestamp son nulos, y todos son valores nulos al guardar. El
único que puede almacenar la hora actual es timestamp, y su atributo se establece en CURRENT_TIMESTAMP

3. suplemento

  1. Navicat también tiene fecha, fecha y hora y otros atributos para configurar la hora, ¡pero ninguno de ellos tiene la última representación de la hora!
  2. Los campos en mysql deben representarse así:

Si la versión de mysql es relativamente baja: (una versión superior de CURRENT_TIMESTAMP puede fallar, intente ahora())

`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',

La versión mysql es relativamente alta:

  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '修改时间',

Supongo que te gusta

Origin blog.csdn.net/weixin_47872288/article/details/131946275
Recomendado
Clasificación