首页 > 解决方案 > Laravel 8 和 SQL Server:时间戳问题

问题描述

大家好,新年快乐,

我正在将我的项目转换为使用 SQL Server 而不是 MySQL,并且我正在努力解决管理时间戳的问题。

在项目中,我有以下代码:

Customers::whereBetween('created_at', [Carbon::now()->subDays('7'), Carbon::now()])->count();

这让我返回了过去 7 天内注册的新客户数量。在使用 SQL Server 时使用 MySQL 没有任何问题,但出现此错误:

将 nvarchar 数据类型转换为日期时间会导致值超出允许范围。

尽管在我的模型中,我设置了

public function getDateFormat()
{
    return 'Y-m-d H: i: s.v';
}

以毫秒为单位获取值。

我忘了设置什么?

标签: laravel

解决方案


该错误告诉您转换失败。可能的原因:

日期不存在

如果您将 2 月 30 日作为输入,它将失败。

输入不符合使用的格式

要检测这是否是问题所在,您需要找出生成的 SQL 是什么,并找出导致此问题的值。仔细研究转换后,您应该能够确定问题和解决方案是什么。


推荐阅读