#sql-server #laravel
#sql-сервер #laravel
Вопрос:
Я использую Laravel 7 и database SQL Server 2017, у меня есть формат даты в моей базе данных следующим образом
Формат даты, хранящийся в базе данных: 2020-08-10
Моя проблема в том, что когда я получаю дату в проекте Laravel, я получаю это изменение формата следующим образом: 20 января 2020 12:00:00:AM
Мой код
$ratingSession = RatingSession::first();
return $ratingSession['pk_date'];
Как я могу это исправить?
Комментарии:
1. Каково определение столбца в SQL Server —
varchar
илиdate
?2. Я определяю тип столбца date
3. Таким образом, тип столбца
date
не имеет формата как такового, это просто дата. Однако вы видите, что формат в вашей базе данных — это просто способ отображения вашего клиента базы данных по умолчанию (SSMS?). Когда вы загружаете его в Laravel, либо он автоматически преобразуется в строку, ЛИБО вы снова просто видите формат по умолчанию. Я не знаю, поддерживает ли Laravel собственные объекты date, но если он действительно вставляет их в один из них. Если это не так, вы можете захотеть использовать функцию SQLformat
для принудительного форматирования даты.
Ответ №1:
Самый простой способ — использовать Carbon. Она включена в Laravel.
return CarbonCarbon::parse($ratingSession['pk_date'])->format('Y-m-d');
Если вы всегда хотите иметь ее в этом формате, вы можете использовать приведение даты в вашей модели:
class RatingSession extends Model
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = [
'pk_date',
];
/**
* The storage format of the model's date columns.
*
* @var string
*/
protected $dateFormat = 'Y-m-d';
Комментарии:
1. Это не может решить мою проблему, я могу преобразовать дату так, как захочу. но моя проблема в том, что я не могу использовать запрос, где pk_date не работает
2. @achmadsyarippudin в вашем вопросе ничего не говорится об этом. Обновите свой вопрос.