2009-10-30 51 views
0

Doctrine ORM 1.0以ISO8601格式插入日期時間值;即:'2009-10-23 12:31:22',但由於某些原因,使用SQL Server 2008 Express作爲我的數據庫,會引發異常,就好像插入的值爲NULL。 這裏的查詢:Doctrine不在SQL Server中插入日期時間

{sfDoctrineLogger} executeQuery : INSERT INTO [vbif_inventarios] ([anulado], [id_restaurante], [fecha_inventario]) VALUES (?, ?, ?) - (0, 1, 2009-10-29 06:06:00)

列[fecha_inventario]是一個DATETIME列。

這給了我:

[err] {Doctrine_Connection_Mssql_Exception} SQLSTATE[HY000]: General error: 10007 No se puede insertar el valor NULL en la columna 'fecha_inventario', tabla 'vbif_operativo.dbo.vbif_inventarios'. La columna no admite valores NULL. Error de INSERT. [10007] (severity 5) [(null)]

試圖手動插入中的DateField相同的字符串(通過SQL管理器的查詢)列也不管用,有沒有辦法可以讓SQL Server來接受這些字符串是否正確?我讀過它確實支持他們。

+0

你是什麼意思「不起作用」? 「SQL Manager」是指Management Studio,或企業管理器還是查詢分析器?你如何將字符串插入列?這是開放的表/編輯前n行,還是別的? OrbMan是正確的,你不能只將一個沒有引號的日期嵌入到這樣的參數語句中,你需要用單引號包裝它。我不熟悉Doctrine,但如果可能的話,你是否考慮過使用存儲過程? – 2009-10-30 17:53:27

+0

按照我的意思,運行 INSERT INTO [vbif_administracion]。[dbo]。[vbif_inventarios]([id_restaurante],[fecha_inventario],[anulado]) VALUES(1,'2009-10-29 10:25: 00',0)GO 在SQL管理工作室,是的OrbMan是正確的(謝謝),但因爲我使用的教義,我不直接寫的聲明,所以它看起來像一個學說問題。 – madarve 2009-10-30 22:52:25

回答

2

您需要引用日期字符串。

INSERT INTO [vbif_inventarios] ([anulado], [id_restaurante], [fecha_inventario]) VALUES (?, ?, ?) - (0, 1, '2009-10-29 06:06:00')