El tipo de fecha y hora de MySQL tiene una precisión de milisegundos

        Los tipos de fecha y hora comúnmente utilizados en MySQL son datetime y timestamp. Entre ellos, datetime ocupa 5 bytes (algunos documentos dicen que es incorrecto ocupar 8 bytes y no ahorrará milisegundos de forma predeterminada).
​​​​​​​​

        DATETIME y TIMESTAMP son dos tipos de datos, en cuanto a cómo elegir, depende de los requisitos comerciales, entre ellos, DATETIME ocupa más bytes, pero expresa un rango más grande. TIMESTAMP no se puede usar para columnas de partición porque este tipo de datos está limitado por la zona horaria y se verá afectado por la zona horaria de la base de datos.

         Al crear una tabla, use sql, porque es necesario ahorrar tiempo y debe ser preciso en el valor de milisegundos. El sitio web oficial da una explicación: MySQL tiene soporte de segundos fraccionarios para valores TIME,  DATETIMETIMESTAMPcon  hasta a precisión de microsegundos (6 dígitos): lo que significa tres Todos los tipos admiten segundos fraccionarios, que es lo que solemos llamar milisegundos. Dado que la marca de tiempo ocupa menos bytes, se selecciona el tipo de datos TIMESTAMP.

CREATE TABLE `s_schedule_log` (
  `log_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'log主健',
  `job_id` int(11) DEFAULT NULL COMMENT '任务id',
  `job_name` varchar(100) DEFAULT NULL COMMENT '任务名称',
  `execute_result` varchar(10) DEFAULT NULL COMMENT '执行结果。字典EXECUTE_RESULT',
  `result_info` varchar(255) DEFAULT NULL COMMENT '执行结果信息',
  `start_time` TIMESTAMP NULL DEFAULT NULL COMMENT '开始时间',
  `end_time` TIMESTAMP NULL DEFAULT NULL COMMENT '结束时间',
  `error_msg` varchar(255) DEFAULT NULL COMMENT '执行失败时的错误信息',
  PRIMARY KEY (`log_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='定时任务执行日志'

        Durante la operación real, se descubrió que el valor de milisegundos no se guardó, y las capturas de pantalla en ejecución y las capturas de pantalla de datos son las siguientes

        Se puede ver en la figura que la parte de milisegundos ya estaba incluida cuando se insertó y actualizó el código, pero no se guardó en la base de datos en ese momento.Consulte el sitio web oficial para publicar: Para definir una columna que incluya una fracción de segundo parte use la sintaxis , donde  es   TIME  , DATETIME  o TIMESTAMP , y   es la precisión de segundos fraccionarios. Por ejemplo:type_name(fsp)type_namefsp

CREATE TABLE t1 (t TIME(3), dt DATETIME(6));

         El  fsp valor, si se da, debe estar en el rango de 0 a 6. Un valor de 0 significa que no hay parte fraccionaria. Si se omite, la precisión predeterminada es 0. (Esto difiere del estándar SQL predeterminado de 6, por compatibilidad con versiones anteriores de MySQL).

        Significa que la parte de milisegundos debe pasarse como parámetro al tipo de datos. De manera predeterminada, los milisegundos no se guardan y se pueden guardar de 1 a 6 dígitos. Si necesita guardar el valor de milisegundos de tres dígitos, el tipo de datos se puede definir como DATETIME (3) o TIMESTAMP (3). Si no necesita guardar milisegundos, solo necesita escribir el tipo directamente como DATETIME TIMESTAMP .

Supongo que te gusta

Origin blog.csdn.net/u011471105/article/details/124766626
Recomendado
Clasificación