首页 > 解决方案 > Laravel 与 MSSQL 不返回小数秒(无毫秒)

问题描述

我正在使用 Laravel 8、SQL Server 2019 和现有存储过程连接到现有数据库。有许多datetime字段存储在各种表中,包括小数秒 ( Y-m-d H:m:s.v),但是,当我通过 Laravel 导出这些数据时,我没有得到毫秒。即使运行结果dd()仍然不包括毫秒。

从数据库:

在此处输入图像描述

dd(): 在此处输入图像描述

即使在表上运行基本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 问题,还是多个问题的组合。

如果有人可以提供帮助,将不胜感激。

标签: phpsql-serverlaraveldatetime

解决方案


推荐阅读