Pasar al contenido principal
Monoforms Web Development

Main navigation

  • Home
  • Sobre mi
  • Contacto

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 4 años 1 mes

Gracias!

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

Contenido reciente

  • Aprende a aprender
  • Beautiful json: Enchulame el JSON
  • Side Project mi propuesta para crear una plataforma de sitios web administrables
  • Por qué regresé a Drupal: la importancia del SEO
  • De PHP a Golang
  • Como crear un CRUD con Laminas, Video Tutorial.
  • Tutorial de Laravel: Crea tu primera API REST en pocos pasos
  • El nucleo Monolitico de Linux.
  • PDO: LOAD DATA LOCAL INFILE forbidden con Yii
  • Twenty Years of PHP

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