不正确的 TIMESTAMP 值 Laravel DB

Incorrect TIMESTAMP value Laravel DB

我在本地主机上设置了一个 laravel 项目,我在其中在调度程序中创建了一个命令,如下所示:

DB::table('relic')->where('created_at', '<', 'NOW() - INTERVAL 1 MONTH')->delete();

我通过 artisan 测试了 运行 调度程序命令 我得到这个输出:

Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1525 Incorrect TIMESTAMP value: 'NOW() - INTERVAL 1 MONTH' (SQL: delete from `relic` where `created_at` < NOW() - INTERVAL 1 MONTH)

我测试了命令
SELECT * FROM relic WHERE created_at < CURRENT_TIMESTAMP() - INTERVAL 1 MONTH;

SELECT * FROM relic WHERE created_at < NOW() - INTERVAL 1 MONTH;
在 mysql 本身并且都正常工作。

我错过了什么?

Carbon 库包含在 Laravel 中,它是处理日期和时间的“标准”方式。您可以按如下方式编写查询:

DB::table('relic')
  ->where('created_at', '<', \Carbon\Carbon::now()->subMonth())
  ->delete();

如果您想使用自己的语法,可以使用 whereRaw 语句,如下所示:

DB::table('relic')
  ->whereRaw('created_at < NOW() - INTERVAL 1 MONTH')
  ->delete();