Pasar al contenido principal
Monoforms Web Development
CAPTCHA
12 + 7 =
Resuelva este simple problema matemático y escriba la solución; por ejemplo: Para 1+3, escriba 4.
Esta pregunta es para comprobar si usted es un visitante humano y prevenir envíos de spam automatizado.

Main navigation

  • Home
  • Sobre mi
  • Contacto
CAPTCHA
5 + 5 =
Resuelva este simple problema matemático y escriba la solución; por ejemplo: Para 1+3, escriba 4.
Esta pregunta es para comprobar si usted es un visitante humano y prevenir envíos de spam automatizado.

Sobrescribir enlaces de ayuda a la navegación

  1. Home
  2. Solución Definitiva Con Las Fechas En SQL Server y Laravel. (Trailing Data)

Solución definitiva con las fechas en SQL Server y Laravel. (Trailing data)

By peter, 6 Noviembre, 2018

​​

Con Laravel y SQL Server tuve muchos problemas con el formato en que se guardaba en el base de datos. Me resigne a una solución temporal, la cual consiste en setear el formato de fecha en cada modelo de la aplicación, definir accesores y mutadores (accessors and mutators). Lo cual no era lo más adecuado.

La solución fue definir un tamaño en el tipo de dato timestamp en las migraciones. Esto obliga a Laravel a definir el tipo de dato de las fechas en datetime2. Por último necesitamos remover en los modelos el formato y los mutadores (si no los utilizas).

Un ejemplo de la migración sería:​

$table->increments('id_respaldo');
$table->text('observaciones')->nullable();
$table->date('fecha_respaldo');
$table->timestamp('fecha_creacion',4)->nullable();
$table->timestamp('fecha_actualizacion',4)->nullable();
$table->softDeletes('fecha_baja',4);

Como podemos ver fecha_creacion, fecha_actualizacion y fecha_baja son de tipo timestamp, lo cual Laravel convierte internamente a datetime2 de SQL Server con precisión de 4 fracciones de segundo según la documentación de datetime2 de SQL Server.
Sino le especificamos la precisión Laravel definirá el tipo de dato en datetime, lo cual causa los problemas ya mencionados en el post  Error Datetime de SQL Server 2008 y Laravel 5.6: Data missing

Esto lo podemos ver en el siguiente código de Laravel incluido en la clase SqlServerGrammar:

protected function typeDateTime(Fluent $column)
{
    return $column->precision ? "datetime2($column->precision)" : 'datetime';
}


Espero sea de ayuda. Saludos.

sql-server

Comentarios1

Angel (no verificado)

Hace 5 años 10 meses

Gracias!

Héroe! la mejor respuesta que he visto (incluyendo StackOverflow)

Contenido reciente

  • Como limpiar usings sin usar en Rider
  • Instalando apache, mysql y php en Ubuntu
  • Cómo liberé 12GB en mi servidor y reviví mi sitio web (sin llorar… mucho)
  • ¿Que son los sitios web agregadores y los anuncios clasificados?
  • Mi Experiencia con Docker, Podman y Kubernetes
  • Lo más destacado del AWS User Group Puebla
  • Docker: Ignorar el directorio vendor en un proyecto de Go.
  • Instala Kubernetes en Ubuntu 22.04 para pruebas
  • Serverless, Lambda y Kubernetes: Fundamentos para la nube
  • Ejecuta tu lambda de Golang en AWS SAM de forma local

Recomendados

  • Biodiv
  • Medium
RSS feed

Política de privacidad

Términos de uso

Recomendados

  • Biodiv
  • Medium
Powered by Drupal

Monoforms ©2021 Created by Pedro Rojas Reyes