"MySQL": tipo de fecha y hora @ 20210225

Para las descripciones de rango DATE y DATETIME, "admitido" significa que, aunque los valores anteriores pueden funcionar correctamente, no está garantizado.

Tipos de Talla (B) abarcar Desplegar formato usar
AÑO [(4)] 1 0000 ,1901 ~ 2155 YYYY Valor del año
HORA [(fsp)] 3 -838: 59: 59 ~ 838: 59: 59 HH: MM: SS [.fracción] Valor de tiempo o duración. Le permite insertar valores usando cadenas o números.
TIMESTAMP [(fsp)] 4 UTC: 1970-01-01 00: 00: 01.000000 ~ 2038-01-19 03: 14: 07.999999 AAAAMMDD HHMMSS Valores de fecha y hora mixtos, marca de tiempo
DATETIME [(fsp)] 8 1000-01-01 00: 00: 00.000000 ~ 9999-12-31 23: 59: 59.999999 AAAA-MM-DD HH: MM: SS [.fracción] Valores mixtos de fecha y hora. Le permite insertar valores usando cadenas o números.
FECHA 4 1000-01-01 ~ 9999-12-31 AAAA-MM-DD Valor de fecha. Le permite insertar valores usando cadenas o números.

En MySQL, TIME, DATETIME y TIMESTAMP admiten fracciones de segundo, y la precisión puede ser tan alta como microsegundos (6 dígitos).

Para que fsp
defina una columna que contenga fracciones de segundo, use la sintaxis type_name (fsp), donde type_name es TIME, DATETIME o TIMESTAMP, y fsp es la precisión de fracción de segundo. El valor de fsp (si se proporciona) debe estar entre 0 y 6. Un valor de 0 significa que no hay una parte decimal. Si se omite, la precisión predeterminada es 0 (diferente del valor predeterminado de SQL estándar de 6, utilizado para compatibilidad con versiones anteriores de MySQL).

Cualquier columna TIMESTAMP o DATETIME de la tabla puede tener propiedades de inicialización y actualización automática. Puede utilizar las cláusulas DEFAULT y ON UPDATE para especificar la fecha y hora actuales para la inicialización automática y la actualización a la columna DATETIME .

Acerca de TIMESTAMP El
valor de TIMESTAMP se almacena como el número de segundos que han pasado desde la época ('1970-01-01 00:00:00' UTC).
TIMESTAMP no puede representar el valor "1970-01-01 00:00:00" porque esto equivale a 0 segundos desde el comienzo de la época, y el valor 0 está reservado para significar "0000-00-00 00:00:00 ".
La forma en que MySQL maneja las definiciones de TIMESTAMP depende de la variable del sistema explicit_defaults_for_timestamp.
Si explícita_defaults_for_timestamp está habilitado, los atributos DEFAULT CURRENT_TIMESTAMP o ON UPDATE CURRENT_TIMESTAMP no se asignarán automáticamente a ninguna columna TIMESTAMP. Deben incluirse explícitamente en la definición de columna. Además, cualquier TIMESTAMP que no se declare explícitamente como NOT NULL permite valores NULL.
Si explicit_defaults_for_timestamp está deshabilitado, MySQL lo maneja de la siguiente manera:

	* A menos que se especifique lo contrario, la primera columna TIMESTAMP de la tabla se define para que se establezca automáticamente en la fecha y hora de la modificación más reciente, si el valor no se especifica explícitamente. Esto permite que TIMESTAMP se utilice para registrar la marca de tiempo de una operación INSERT o UPDATE. También puede establecer la columna TIMESTAMP a la fecha y hora actuales asignándola a un valor NULL, a menos que el valor NULL se haya definido utilizando el atributo NULL.
	* Puede utilizar las cláusulas de definición de columna DEFAULT CURRENT_TIMESTAMP y ON UPDATE CURRENT_TIMESTAMP para especificar la inicialización automática y la actualización a la fecha y hora actuales. De forma predeterminada, la primera columna TIMESTAMP tiene estos atributos, como se describió anteriormente. Sin embargo, cualquier columna TIMESTAMP en la tabla se puede definir como teniendo estos atributos.

Acerca del tipo YEAR El tipo de datos
YEAR (2) ha quedado obsoleto y su compatibilidad se ha eliminado en MySQL 5.7.5. Para convertir la columna AÑO (2) a AÑO (4), puede consultar la Sección 11.3.4, "Limitaciones del AÑO (2) y migración a AÑO (4)"

Otras consideraciones Las
funciones agregadas SUM () y AVG () no son aplicables a los valores de tiempo, porque convierten el valor en un número y descartan todo lo que sigue al primer carácter que no es un dígito. Para resolver este problema, primero debe convertir el tiempo en un valor, luego realizar una operación de agregación y luego convertirlo en un valor de tiempo:

SELECT SEC_TO_TIME (SUM (TIME_TO_SEC (time_col))) FROM tbl_name;
SELECCIONE FROM_DAYS (SUM (TO_DAYS (date_col))) FROM tbl_name;

Puede ejecutar el servidor MySQL con el modo MAXDB SQL habilitado. En este caso, TIMESTAMP es lo mismo que DATETIME. Si este modo está habilitado cuando se crea la tabla, la columna TIMESTAMP se creará como una columna DATETIME. Por lo tanto, estas columnas utilizan el formato de visualización DATETIME, tienen el mismo rango de valores y no se inicializan ni actualizan automáticamente a la fecha y hora actuales. Consulte la Sección 5.1.8, “Modos SQL del servidor”.

Valor predeterminado del campo

Puede establecer valores predeterminados para los campos de fecha y hora.

Pero esto está relacionado con la versión específica y las diferentes versiones se comportan de manera diferente.

MySQL 5.5

El valor predeterminado de la columna de fecha no se puede establecer en una función, como NOW () o CURRENT_DATE, etc.

Pero puede usar CURRENT_TIMESTAMP como valor predeterminado para la columna TIMESTAMP .

MySQL 5.6.5

Las columnas TIMESTAMP y DATETIME se pueden inicializar y actualizar automáticamente a la fecha y hora actuales.

Hay otro uso: EN ACTUALIZACIÓN, cuando se actualiza la columna, se actualiza automáticamente a la fecha actual:

CREAR TABLA t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

referencias

No se puede establecer una fecha predeterminada para CURRENT_TIMESTAMP en MySQL 5.5
¿Cómo se establece un valor predeterminado para una columna de fecha y hora de MySQL ?
11.1.2 Descripción general del tipo de fecha y hora
11.3.5 Inicialización y actualización automáticas para TIMESTAMP y DATETIME

Supongo que te gusta

Origin blog.csdn.net/u013670453/article/details/114106529
Recomendado
Clasificación