Laravel с MSSQL не возвращает доли секунды (без миллисекунд)

#php #sql-server #laravel #datetime

#php #sql-сервер #laravel #дата и время

Вопрос:

Я подключаюсь к существующей базе данных, используя Laravel 8, SQL Server 2019 и существующие хранимые процедуры. В datetime различных таблицах хранится множество полей, которые включают дробные секунды ( Y-m-d H:m:s.v ), однако, когда я экспортирую эти данные через Laravel, я не получаю миллисекунд. Даже прогон результатов по dd() -прежнему не включает миллисекунды.

Из базы данных:

введите описание изображения здесь

dd(): введите описание изображения здесь

Даже запуск basic select * для таблиц также не возвращает миллисекунды.

Могу ли я в любом случае преодолеть это, поскольку мне нужна ссылка на полное значение даты и времени.

Обновленная информация

 Laravel Version: 8.9.0
Homestead Version: 9.5.1
Vagrant Version: 2.2.9
PHP Version: 7.4.5
MSSQL Version: 2019
  

Запуск следующего необработанного запроса из базы данных:

 $q = WarehouseCredit::select(DB::raw(
    InvoiceNumber,
    DateModified,
    CONVERT(varchar, DateModified, 121) AS DateModified1"
))
  

ВОЗВРАТ

 [
  {
    "InvoiceNumber": "A00001",
    "DateModified": "2020-03-04 09:58:56",
    "DateModified1": "2020-03-04 09:58:56.723"
  }
],
  

Я не понимаю, почему единственный способ получить дробные секунды — преобразовать поле в строку. Это не самый предпочтительный метод для меня, поскольку в конечном итоге я буду извлекать информацию с помощью хранимой процедуры, поэтому у меня не будет возможности запускать необработанные запросы.

Я не могу найти никакой информации о других людях, испытывающих эту проблему в той же степени, поэтому я не могу сказать, является ли это проблемой PHP, Laravel, MSSQL, Linux или Homestead, или комбинацией нескольких.

Если кто-нибудь вообще может помочь, это было бы с благодарностью.

Комментарии:

1. Можете ли вы предоставить код хранимой процедуры

2. Извините @MuhammadWaqasAziz Я только что определил, что даже простое выполнение простого select * оператора из таблицы все еще сокращает миллисекунды. Так что, похоже, это не связано с хранимой процедурой, как я думал.

3. Laravel работает поверх PHP, не так ли? Поддерживает ли класс PHP DateTime миллисекунды?

4. Вы нашли решение по прошествии времени? @Riples

5. @PsychoX Нет, решения нет. Мне кажется странным, что никто никогда не сталкивался с этим. Моим ЕДИНСТВЕННЫМ вариантом было попросить администратора БД добавить дополнительное поле в БД к cast полю в правильном формате, чему он был недоволен, но выбора не было. Действительно разочаровывающий результат для меня, поскольку это не должно быть ракетостроением.