Ошибка, которую я нашел в журнале, приведена ниже.Как исправить ошибку «Ошибка преобразования при преобразовании даты и времени из символьной строки» в SQL Query?
'Осветите \ Database \ QueryException' с сообщением «SQLSTATE [22007]: [Microsoft] [Драйвер ODBC 11 для SQL Server] [SQL Server] Конверсия сбой при преобразовании даты и/или времени из символьной строки , (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 \ Framework \ Src \ Illuminate \ Database \ connection.php: 625
На базе данных, тип данных является datetime
и не нулевой
на основе marc_s's answer я попытался изменить для который я отправляю в базу данных. Поэтому я пробовал без T
по телефону and [created_at] between '2015-09-30 00:00:00' and '2015-09-30 23:59:59'
.
В моем локальном я использую mysql, и код работает нормально. Если я тестирую запрос выше на клиенте SQL Server, то и работает (с и без T
).
Как исправить эту проблему без каких-либо изменений в самой базе данных?
РНР/Laravel код:
$items = $items->whereBetween($key, ["'".$value_aux."T00:00:00'", "'".$value_aux."T23:59:59'"]);
Try: '{ts'1900-01-01 00:00:00}' этот формат, как 'между {ц«2015-09-30 00 : 00: 00 '} и ... ' – lad2025
Первый YYYY-MM-dd – lad2025
Извините @ lad2025 Я не знаю, как я мог реализовать этот формат (если вы говорите о e YYYY-DD-MM уже используется в качестве примера сверху) –