Estoy tratando de almacenar un reloj de 12/24 horas (es decir, 00:00) en una base de datos MySQL. En este momento estoy usando el tipo de datos de tiempo. Esto funciona bien pero insiste en agregar los segundos a la columna. Entonces ingresa a las 09:20 y se almacena a las 09:20:00. ¿Hay alguna manera de limitarlo en MySQL a solo 00:00?Usar el tipo de datos de tiempo en MySQL sin segundos
Respuesta
Eso no parece posible. El tipo de datos TIME
se define para representar la hora del día (o el tiempo transcurrido) con una resolución de 1 segundo. Sin embargo, siempre se puede utilizar la función DATE_FORMAT()
para dar formato al campo como HH:MM
en una consulta SELECT
:
SELECT DATE_FORMAT(NOW(), '%k:%i');
+-----------------------------+
| DATE_FORMAT(NOW(), '%k:%i') |
+-----------------------------+
| 4:09 |
+-----------------------------+
1 row in set (0.00 sec)
SELECT DATE_FORMAT(NOW(), '%H:%i');
+-----------------------------+
| DATE_FORMAT(NOW(), '%H:%i') |
+-----------------------------+
| 04:09 |
+-----------------------------+
1 row in set (0.00 sec)
El TIME
column type no acepta ningún parámetro o modificador para definir rango o de precisión. Sin embargo, puede omitir los segundos en insertar si tiene cuidado:
Tenga cuidado al asignar valores abreviados a la columna TIME. MySQL interpreta los valores abreviados de TIEMPO con dos puntos como la hora del día. Es decir, '11: 12 'significa '11: 12: 00', no '00: 11: 12 '. MySQL interpreta valores abreviados sin dos puntos suponiendo que los dos dígitos de la derecha representan segundos (es decir, como el tiempo transcurrido en lugar de que como la hora del día). Por ejemplo, se podría pensar en '1112' y 1112 en el sentido de '11: 12: 00' (12 minutos después de 11 horas), pero MySQL los interpreta como '00: 11: 12' (11 minutos, 12 segundos). Del mismo modo, '12' y 12 se interpretan como '00: 00: 12 '.
CREATE TABLE example (
example_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
elapsed TIME NOT NULL,
PRIMARY KEY (example_id)
);
INSERT INTO example (elapsed) VALUES ('123:45:00'), ('123:45');
SELECT * FROM example;
+------------+-----------+
| example_id | elapsed |
+------------+-----------+
| 1 | 123:45:00 |
| 2 | 123:45:00 |
+------------+-----------+
... y se pueden quitar de lectura (si es necesario) mediante la aplicación de una adecuada TIME_FORMAT(), señalando que:
Si el valor de tiempo contiene una parte que hora es mayor que 23, los especificadores de formato % H y% k hora producen un valor mayor que el rango habitual de 0..23. Los otros especificadores de formato horas producen el valor del módulo hora 12.
INSERT INTO example (elapsed) VALUES ('2:00');
SELECT example_id, TIME_FORMAT(elapsed, '%k:%i') AS elapsed
FROM example;
+------------+---------+
| example_id | elapsed |
+------------+---------+
| 1 | 123:45 |
| 2 | 123:45 |
| 3 | 2:00 |
+------------+---------+
Desde MySQL/5.7.5 también se puede utilizar un generated column para obtener un valor de la pantalla automáticamente:
-- Completely untested, I don't have 5.7 yet
CREATE TABLE example (
example_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
elapsed TIME NOT NULL,
-- Size to accomodate for '-838:59:59'
elapsed_display VARCHAR(10) AS (TIME_FORMAT(elapsed, '%k:%i')) VIRTUAL NOT NULL,
PRIMARY KEY (example_id)
);
- 1. MySQL tiempo de duración de almacenamiento - tipo de datos?
- 2. Tipo de fecha sin tiempo en Oracle
- 3. Diferencia de MySql entre dos marcas de tiempo en segundos?
- 4. Mysql SEC_TO_TIME sin segundos posteriores - Solución encontrada
- 5. ¿Qué tipo de datos usar en MySQL para almacenar imágenes?
- 6. diferencia de tiempo en segundos
- 7. Iteración sin usar el cursor en MYSQL
- 8. Elegir el tipo de datos para MySQL?
- 9. función para convertir el tiempo en número de segundos
- 10. cómo usar el tipo de datos de tiempo del servidor sql en la aplicación .net?
- 11. ¿Qué tipo de datos MySQL usar para una dirección IP?
- 12. MySQL DECIMAL tipo de datos
- 13. Cómo usar el tipo de datos largos en C?
- 14. MySQL - el mejor tipo de datos para el tiempo simple con horas y minutos
- 15. NSTimer Reducir el tiempo en segundos/milisegundos
- 16. Ruby: convertir el tiempo a segundos?
- 17. Mysql cómo configurar el tipo de datos de tiempo para que sea solo HH: MM en la base de datos
- 18. dar un retraso de unos segundos sin usar hilos
- 19. ¿Cuál es el tipo de datos para unix_timestamp (MySQL)?
- 20. Insertar datos binarios en MySQL (sin PreparedStatement)
- 21. Convertir tiempo para usar en mysql
- 22. ¿Eliminar segundos del campo de tiempo?
- 23. MySQL tipo de datos base de datos de
- 24. Tiempo en segundos para el formato de cadena personalizada
- 25. Monitoreo de MySQL en tiempo real
- 26. Cambiar un tipo de datos de columna mySQL del texto a la marca de tiempo
- 27. Agregar segundos a datetime en MySQL
- 28. ¿Qué tipo de columna se debe usar para almacenar datos serializados en un db mysql?
- 29. ¿Cuál es el tipo de intervalo de tiempo de la máxima edad en el encabezado de respuesta HTTP? Segundos, minutos?
- 30. cálculo de tiempo de pitón (mili segundos)