Conversiones de fecha útiles entre MYSQL, PHP Y JavaScript

lunes, julio 6th, 2020

El tema de las fecha es un asunto serio, conversiones aqui, formatos allá, y compatibilizar todo entre diferentes lenguajes y bases de datos, es todo un aprendizaje aparte. He decidido recopilar en este post todos aquellos comando útiles de conversiones de fechas y otros trucos que me han servido y que puedas utilizar si acaso lo consideras útil.

Comandos de fecha para Mysql

A continuación los comandos útiles para Mysql

1)Devolver una fecha de acuerdo a tu huso horario

A menos que tu servidor este en tu oficina o en tu país, difícilmente estará en el mismo huso horario, por lo general los servidores están en EEUU ya sea en la costa oeste o este, casi siempre en otro huso horario al de tu país, por esa razón cuando trabajes con campos Datetime en mysql debes hacer un pequeño ajuste para mostrar los resultados.

Por ejemplo puede ser que tu servidor se encuentre 6 horas después que tu país, por lo que cuando realizamos consultas debemos presentarlas con un ajuste:

date(DATE_SUB(fecha, INTERVAL 6 HOUR))

Puedes cambiar el número 6 ajustándose al horario de tu país con la función DATE_SUB(campo, INTERVAL valor intervalo)

El intervalo puede ser cualquiera de estos :

  1. MICROSECOND
  2. SECOND
  3. MINUTE
  4. HOUR
  5. DAY
  6. WEEK
  7. MONTH
  8. QUARTER
  9. YEAR
  10. SECOND_MICROSECOND
  11. MINUTE_MICROSECOND
  12. MINUTE_SECOND
  13. HOUR_MICROSECOND
  14. HOUR_SECOND
  15. HOUR_MINUTE
  16. DAY_MICROSECOND
  17. DAY_SECOND
  18. DAY_MINUTE
  19. DAY_HOUR
  20. YEAR_MONTH

Comandos de fecha para PHP

Dejaré aqui los comando útiles par a php

1)Cómo obtener la fecha inicial y la fecha final de un mes en php

Cuando necesitas consultar una tabla por sus campos de fecha, quizá te sea útil establecer unos parámetros de fecha para un periodo por default, que generalmente es el mes actual, así puedes mostrar el conjunto de datos mas reciente y luego permitir al usuario que cambie la fecha para que pueda consultar otro conjunto de registros. El comando para hacerlo es el siguiente:

Comando para obtener el primer día del mes actual

$cFecha1=date('Y-m-01');

Comando para obtener el último día del mes actual

$cFecha2=date('Y-m-t');

Comandos para fechas de JavaScript

Aquí te comparto comandos para javascript. A los que venimos de lenguajes antiguos el manejo de las fechas en javascript nos puede parecer desconcertante, por ejemplo el método getday() no te devuelve el día de una fecha sino un entero que representa el dia de la semana; si lo que deseas es el día del mes entonces debes usar getDate().

Te recuerdo que este blog es para programadores que vienen de lenguajes viejos y que todavía no han hecho el pase a lenguajes web, si eres nativo de la web, nuestro contenido bien puede parecer trivial o demasiado básica.

1)Cómo generar la fecha inicial y final de un mes en JavaScript

Al igual que con Php es posible que necesites obtener la primera fecha y la última para enviar los parámetros de una consulta.

Para obtener la fecha inicial:

var dt= new Date();
var dtFirst=Date(1,dt.getMonth()+1,dt.getYear()+1900);

Para obtener la fecha final:

var dt= new Date();
var y = dt.getFullYear();
var m = dt.getMonth();
var dtEnd= new Date(y, m + 1, 0);
        

2)Preparar una fecha en formato válido para mysql en JavaScript

Sucede que cuando realizas consultas a una base de datos Mysql necesita enviar las fechas ya formateadas, así el procesamiento se realiza en el lado del cliente y tu servidor no se ve cargado con procesamiento extra innecesariamente. Te comparto una función que puedes uar en JavaScript para convertir a formato Mysql

function convertDateMysql(strDate){
            const parts = strDate.split('/');
            const day = parts[0];
            const month = parts[1];
            const year = parts[2];
            return year+"-"+month.padStart(2, "0")+"-"+day.padStart(2, "0");
		}

Iré dejando mas código útil para el tratamiento de fecha.

Compartir esto en:
Twitter |Facebook |Whatsapp |Google+ |Linekdin |Pinterest


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *