【问题标题】:Doctrine can't insert DateTime into MSSQL 2005Doctrine 无法将 DateTime 插入 MSSQL 2005
【发布时间】:2010-11-21 03:49:44
【问题描述】:

我将 Doctrine 2.0 与 php5.3 一起使用,由带有 MSSQL\SQLEXPRESS 2005 后端的 apache2 提供服务。
我的问题是,当我使用 DateTime 对象插入记录时,出现错误。

PDOException: SQLSTATE[22007]: [Microsoft][SQL Server Native Client 10.0][SQL Server]从字符串转换日期时间时转换失败。

作为故障排除的一部分,我已验证目标列实际上是日期时间类型。我已经使用 EchoLogger 回显了查询,它返回类似这样的内容

INSERT INTO proposal (proposaldate, ...)
   VALUES (?..) { [1]=> object(DateTime)#264 (3) { ["date"]=> string(19) "2010-11-20 22:15:12" ["timezone_type"]=> int(3) ["timezone"]=> string(16) "America/New_York" }..}

最令人不安的是,使用相同包的类似类在以相同方式插入日期时间时执行完美。

非常感谢任何帮助。

【问题讨论】:

标签: php sql-server-2005 datetime doctrine


【解决方案1】:

听起来像是语言环境问题。要克服,请以ISO 8601 格式写出您的字符串,即。 YYYYMMDD

2010/21/11

【讨论】:

  • 我可能弄错了,但我认为 PDO 会处理日期格式。如,它被传递一个日期时间对象,并且 PDO 通过执行类似的操作对其进行格式化。 $dateTime->format("ISO8601").我试过给它传递一个字符串,但它抱怨无法在非对象上调用“格式”。
  • 原来我的专栏被标记为“日期时间”而不是“日期”
猜你喜欢
  • 2015-07-13
  • 2017-05-31
  • 2013-02-18
  • 1970-01-01
  • 2013-07-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多