Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Masalah format Symfony + Doctrine Oracle DateTime

Buat Jenis DBAL khusus yang memperluas DateTimeType dan ganti convertToPHPValue fungsi (saya menyalin VarDateTimeType class, yang tidak berhasil mengonversi tipe Tanggal yang digunakan oleh instalasi Oracle saya):

<?php

namespace YourCompany\SomeBundle\Doctrine\DBAL\Types;

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

class SillyDateTimeType extends DateTimeType
{
    /**
     * {@inheritdoc}
     * @throws \Doctrine\DBAL\Types\ConversionException
     */
    public function convertToPHPValue($value, AbstractPlatform $platform)
    {
        if ($value === null || $value instanceof \DateTime) {
            return $value;
        }

        $val = \DateTime::createFromFormat('d-M-y H.i.s.u A', $value);
        if ( ! $val instanceof \DateTime) {
            throw ConversionException::conversionFailed($value, $this->getName());
        }

        return $val;
    }
}

Ganti $val = \DateTime::createFromFormat('d-M-y H.i.s.u A', $value); dengan format apa pun instalasi Anda kembali untuk kolom tersebut.

Kemudian daftarkan saja di bawah dbal di config.yml :

# app/config/config.yml
doctrine:
    dbal:
        types:
          sillydatetime: YourCompany\SomeBundle\Doctrine\DBAL\Types\SillyDateTimeType

Sekarang Anda dapat menggunakan sillydatetime (atau apa pun sebutannya) di mana pun dalam spesifikasi jenis kolom Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nilai tidak valid untuk parameter, 'direktori'

  2. ORA-01460:permintaan konversi yang tidak diterapkan atau tidak masuk akal

  3. Cara menggunakan fungsi Analitik di oracle (Over Partition by Keyword)

  4. Alat pengembangan dan manajemen basis data Oracle yang bagus di Windows

  5. Tabel Temp Global - SQL Server vs Oracle