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
vote

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
 
vote
vote
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 
 
 
   
   

Relacionados problema

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...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos