# Segundos fraccionarios redondos de tiempo de MySQL -- php campo con mysql campo con datetime campo con codeigniter camp codereview Relacionados El problema

## Round fractional seconds of MySQL Time

1

### problema

Español

He escrito un método para redondear un mysql ` Time ` a dos lugares decimales. Aquí hay algunos ejemplos:

` ` Input           -> Output  13:04:27.127930 -> 13:04:27.13 00:00:14.000000 -> 00:00:14.00 02:19:03.300000 -> 02:19:03.30 07:13:00.954639 -> 07:13:00.96  ` `

El código actual funciona, pero parece un poco difícil de seguir. ¿Cómo podría mejorar la legibilidad del código? El rendimiento no es una gran preocupación.

` ` 9988776655544333  ``

Mientras escribe esta pregunta, me di cuenta de un caso que mi método actual no funcionará con precisión:

` ` Input           -> Desired Output -> My Output 00:00:00.995000 -> 00:00:01.00    -> 00:00:00.00   ``
Original en ingles

I've written a method to round a MySQL `Time` to two decimal places. Here's some examples:

``Input           -> Output  13:04:27.127930 -> 13:04:27.13 00:00:14.000000 -> 00:00:14.00 02:19:03.300000 -> 02:19:03.30 07:13:00.954639 -> 07:13:00.96 ``

My current code works, but seems a bit difficult to follow. How could I improve the readability of the code? Performance isn't too much of a concern.

``<?php public function mysql_time_to_human(\$mysql_time)     {         //how many decimal places it should show         (defined('DECIMAL_PLACES')) ?: define('DECIMAL_PLACES', 2);          //Separate the sting on the decimal place         \$time_parts = explode('.', \$mysql_time);          //Add a 0 prefix so it can properly round the decimal part         \$time_parts[1] = '0.' . \$time_parts[1];          //Round the number to two decimal places         \$rounded_part = round(\$time_parts[1], DECIMAL_PLACES);          //Ensure the part is always two decimal places, including zeroes         \$time_parts[1] = sprintf('%.2f', \$rounded_part);          //Remove the 0 prefix added earlier         \$time_parts[1] = substr(\$time_parts[1], 2);          //Glue the parts back together         \$time = implode('.', \$time_parts);          return \$time;     } ``

While writing this question I've realized a case which my current method won't accurately work for:

``Input           -> Desired Output -> My Output 00:00:00.995000 -> 00:00:01.00    -> 00:00:00.00 ``

## Lista de respuestas

1

La mejor respuesta

¿Por qué no solo lanzar el campo a una precisión menor al consultar de la base de datos?

Por ejemplo:

` ` SELECT CAST(time_field AS TIME(2)) FROM table   ``

Why not just cast the field to lesser precision when querying from the database?

For example:

``SELECT CAST(time_field AS TIME(2)) FROM table ``

3  Construyendo la vista del cuerpo html  ( Building the html body view )
He creado una clase de biblioteca en Codeigniter que maneja la construcción de la vista del cuerpo HTML. Esta clase construye el cuerpo, agrega contenido y ...

2  Identificación de un servidor de desarrollo y producción por http_host  ( Identifying a development and production server by http host )
Estoy usando el código inferior para reconocer qué configuración necesito usar en CodeIgniter: \$dev_urls = array('dev.com'); \$prod_urls = array('prod.com')...

1  Función y uso del grupo de la casilla de verificación  ( Checkbox group function and usage )
En CodeIgNITER, he creado Función (Helper) para rellenar, almacenar y recuperar el grupo de la casilla de verificación. Me pregunto si he escrito el código de...

9  Crítico My CodeIgniter Custom CMS Pages Model  ( Critique my codeigniter custom cms pages model )
Actualmente estoy desarrollando un CMS personalizado que se está basando en la parte superior de CodeIgniter y se preguntó si puede detectar cualquier falla e...

6  CodeIgniter Model I Forder  ( Codeigniter model i built )
¿Puedo obtener algunos punteros, críticas y / o comentarios sobre el siguiente modelo? (P.S. Performance parece excelente ... Probó todos los métodos de hasta...

1  Pasando un objeto a la vista en CodeIgner  ( Passing an object to the view in codeigniter )
Estoy tratando de usar un objeto y persistirlo en la base de datos. He creado una clase en la carpeta de la biblioteca. <?php if (!defined('BASEPATH'))...

3  MVC correcto en CodeIgner  ( Correct mvc in codeigniter )
En mi proyecto CODIGNITERITE, tengo un controlador de inicio de sesión que carga esta vista: autoConnect.py2 El controlador: autoConnect.py3 , FUNCIÓN:...

3  Diseño de MVC para recuperar, almacenar y presentar datos de una fuente externa  ( Mvc design to fetch store and present data from an external source )
Hace un par de semanas Una compañía me envió este desafío de codificación: Por favor escriba una aplicación web PHP y envíela a mí como archivo zip: que...

6  Sistema de inicio de sesión con sesión usando CodeIgniter  ( Login system with session using codeigniter )
Implementé un sistema de inicio de sesión, con sesión, utilizando CodeIgniter. Si la sesión no existe, redirige a la página de inicio de sesión. Por favor rev...

30  Codeigniter Active Record Subqueries  ( Codeigniter active record subqueries )
Yo uso CodeIgNiter en el trabajo, y uno de nuestros archivos modelo tuvo muchas subcarías en ella. Originalmente tuve que escribir manualmente cada subconsu...