加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Doctrine 2:无法在SQL Server 2008apm上更新DateTime co

发布时间:2020-12-13 14:06:19 所属栏目:PHP教程 来源:网络整理
导读:我在Apache服务器上使用Doctrine 2.2和php 5.3. 到目前为止,我偶然发现了以下问题: 当我尝试更新datetime列时,我得到: SQLSTATE [22007]:[Microsoft] [SQL Server Native Client 10.0] [SQL Server]从字符串转换日期和/或时间时转换失败. 我甚至走到了这
我在Apache服务器上使用Doctrine 2.2和php 5.3.

到目前为止,我偶然发现了以下问题:
当我尝试更新datetime列时,我得到:
SQLSTATE [22007]:[Microsoft] [SQL Server Native Client 10.0] [SQL Server]从字符串转换日期和/或时间时转换失败.

我甚至走到了这么远的地方,然后使用它只用了1天来设置新的日期……相同的结果.

当我改为将数据库中的列和实体从datetime更改为日期时,它按预期运行.

我的主要问题是,有几个字段我需要使用datetime列.

这是我的代码:

(birthdate是我改为日期的专栏……并且是我可能的少数专栏之一):

//This returns the datetime object that represents birthdate from the database 
$help=$object->getBirthDate(); 
$help->setTimestamp(mktime($time[0],$time[1],$time[2],$date[2],$date[1],$date[0])); 
$help->format(DateTime::ISO8601); 
$object->setBirthDate($help);

有人知道这里的解决方法吗?

非常感谢任何帮助.

我在Doctrine 2.5和SQL Server 2012中遇到了这个问题.问题是数据库字段是DATETIME类型,但是doctirne只支持SQLServer2008Platform及更高版本的DATETIME2.

您不应该编辑供应商目录中的文件.正确的答案是创建一个自定义类型:Doctrine Custom Mapping Types.在我的例子中,我扩展了当前的DateTimeType:

<?php

namespace AppBundleDoctrineType;

use DoctrineDBALTypesDateTimeType;
use DoctrineDBALPlatformsAbstractPlatform;

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

}

然后在Symfony config.yml中:

types:
      datetime: AppBundleDoctrineTypeDateTime

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读