sql >> Databáze >  >> RDS >> Sqlserver

Doktrína 2:Nelze aktualizovat sloupec DateTime na SQL Server 2008apm

Narazil jsem na tento problém s Doctrine 2.5 a SQL Server 2012. Problém je, že pole databáze je typu DATETIME , ale doctirne podporuje pouze DATETIME2 na platformě SQLServer2008 a vyšší.

Neměli byste upravovat soubory v adresáři vašeho dodavatele. Správná odpověď je vytvořit vlastní typ:Doktrína Vlastní typy mapování . V mém případě jsem rozšířil aktuální DateTimeType:

<?php

namespace AppBundle\Doctrine\Type;

use Doctrine\DBAL\Types\DateTimeType;
use Doctrine\DBAL\Platforms\AbstractPlatform;

class DateTime extends DateTimeType
{
    private $dateTimeFormatString = 'Y-m-d H:i:s.000';

    public function convertToDatabaseValue($value, AbstractPlatform $platform)
    {
        return ($value !== null)
            ? $value->format($this->dateTimeFormatString) : null;
    }

}

A pak v souboru Symfony config.yml:

    types:
      datetime: AppBundle\Doctrine\Type\DateTime


  1. Vkládání dat ve formátu mm/dd/yyyy do MySQL

  2. Jak zkontrolovat datum poslední změny v uložené proceduře nebo funkci na SQL serveru

  3. Hibernate @Enumerated se zdá být ignorován

  4. Funkce PL/pgSQL:Jak vrátit normální tabulku s více sloupci pomocí příkazu execute