Tabla de contenido
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:
La forma correcta de configurarlo es la siguiente:
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
- 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!
- 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 '修改时间',