Я работаю над проектом, работающим на существующей базе данных.Проблема заключается в том, что столбцы даты и времени вставляются в SQL Server в неправильном формате.Сервер использует datetime в качестве Ymd, а данные сохраняются в формате Ydm.
Я провел несколько тестов, и при сохранении в MariaDB datetime сохраняется правильно.
Существуют настраиваемые поля для updated_at иcreate_at, поэтому они объявлены в модели.
В модели
class NotaFaturamento extends Model
{
const CREATED_AT = 'DT_CADASTRO';
const UPDATED_AT = 'DT_ATUALIZACAO';
Это печать QueryLog после сохранения данных.Как видно из журнала запросов, формат даты и времени правильно анализируется в SQL Server.
Querylog
On Config \ app.php
'timezone' => 'America/Sao_Paulo',
'locale' => 'pt-BR',
Это то, что нужно настроить на SQLServer?Я много об этом искал, но большинство ответов касаются разделителей SQL Server.
Я также объявил защищенный $dateFormat = 'Y-m-j h:i:s:000A';
на модели, но возникает та же проблема.Эта проблема также присутствует при хранении углеродных объектов.
С уважением.
РЕДАКТИРОВАТЬ
Как указал Дэн, проблема может быть связана с DATEFORMAT наSQL Server используется как DMY.Кроме того, как указывалось на эту проблему и на нее ответил @dns_nx, существует обходной путь для ручного изменения формата даты для сохранения на SQL Server.
Я добавил в свою модель
public function getDateFormat()
{
return 'Y-d-m H:i:s.v';
}
И любые другие атрибуты даты в модели должны быть объявлены как даты:
protected $dates = ['DT_EMISSAO', 'DT_COMPETENCIA'];
Я не думаю, что это правильный способ решения проблемы, но он работает.И вы могли бы создать другую базовую модель, как упомянуто в @ dns_nx.
С уважением