Исправление даты в формате SQL Server в Laravel

#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, но если он действительно вставляет их в один из них. Если это не так, вы можете захотеть использовать функцию SQL format для принудительного форматирования даты.

Ответ №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 в вашем вопросе ничего не говорится об этом. Обновите свой вопрос.