Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Symfony + Doctrine Oracle vấn đề về định dạng DateTime

Tạo Loại DBAL tùy chỉnh mở rộng DateTimeType và ghi đè convertToPHPValue (Tôi đã sao chép VarDateTimeType lớp, không thể chuyển đổi thành công loại Ngày mà cài đặt Oracle của tôi đang sử dụng):

<?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;
    }
}

Thay thế $val = \DateTime::createFromFormat('d-M-y H.i.s.u A', $value); với bất kỳ định dạng nào mà cài đặt của bạn sẽ trả về cho các cột đó.

Sau đó, chỉ cần đăng ký nó theo dbal trong config.yml :

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

Giờ đây, bạn có thể sử dụng sillydatetime (hoặc bất cứ điều gì bạn gọi nó) ở bất kỳ đâu trong thông số kỹ thuật loại cột của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng hàm trong mệnh đề where với tham số clob

  2. ORA-00903:tên bảng không hợp lệ trên PreparedStatement

  3. SQL Tiếp tục gặp lỗi với BẬT CẬP NHẬT CASCADE

  4. ASP.net MVC và tổng hợp kết nối với Oracle, cho phép nhiều kết nối hơn được chỉ định trong Kích thước nhóm tối đa

  5. `show create table` tương đương trong oracle sql