我在日誌中發現的錯誤是下面的錯誤。如何修復SQL查詢中的錯誤「從字符串轉換datetime時轉換失敗」?
'照亮\數據庫\ QueryException' 與消息「SQLSTATE [22007]: [微軟] [ODBC SQL Server的驅動程序11] [SQL服務器]轉換 從字符串轉換日期和/或時間時失敗。 (SQL:
SELECT COUNT(*) AS aggregate
FROM [mytable]
WHERE [mytable].[deleted_at] IS NULL
AND [created_at] BETWEEN '2015-09-30T00:00:00' AND '2015-09-30T23:59:59'
AND ((SELECT COUNT(*) FROM [mytable_translation]
WHERE [mytable_translation].[item_id] = [mytable].[id]) >= 1)
)」 在 的wwwroot \ MyProject的\供應商\ laravel \框架的\ src \照亮\數據庫\ Connection.php:625
在數據庫, DataType是datetime
並且是非null
基於marc_s's answer我試圖更改for我發送到數據庫的墊子。所以我試着在and [created_at] between '2015-09-30 00:00:00' and '2015-09-30 23:59:59'
上沒有T
。
在我的地方,我使用MySQL和代碼工作就好了。如果我在SQL Server客戶端上測試上面的查詢,兩者(有和沒有T
)都可以。
我該如何解決這個問題,而不會在數據庫本身上創建任何更改?
的PHP/Laravel代碼:
$items = $items->whereBetween($key, ["'".$value_aux."T00:00:00'", "'".$value_aux."T23:59:59'"]);
嘗試:'{ts'1900-01-01 00:00:00' }'這種格式,如'之間{TS「二零一五年九月三十日00 :00:00' }和...' – lad2025
首先YYYY-MM-DD – lad2025
對不起@ lad2025我不知道我怎麼能實現這種格式(如果你正在談論日e YYYY-DD-MM已經在使用上面的例子) –