gpt4 book ai didi

PHP Carbon 和 MySQL 将 9999-31-12 插入到表中最终为 0000-00-00

转载 作者:行者123 更新时间:2023-11-29 02:16:19 26 4
gpt4 key购买 nike

我在我的 PHP7/Laravel 5.2/MySql 5.7 项目中使用 Carbon 来操作我的日期。

我正在尝试将日期 9999-12-31 23:59:59 插入到时间戳字段中,但在插入时它解析为全零。

我的迁移创建列如下:

$table->timestamp('end_date');

我的代码生成这样的日期:

$endDate = Carbon::create(9999, 12, 31, 23, 59, 59);

然后我像这样将它插入到表中:

 ClientSubscription::create([
'end_date' => $endDate,
])->save();

我可以看到(通过迁移期间的屏幕转储)日期已正确生成为 Carbon 实例,如下所示:

ED= : {
"date": "9999-12-31 23:59:59.000000",
"timezone_type": 3,
"timezone": "UTC"
}

然而查询我的表的结果是:

0000-00-00 00:00:00

我小心翼翼地在使用 Carbon 插入之前不要计算掉这个日期,所以我会在这个日期生成后立即复制它,然后使用副本来计算周期等。

所有其他计算日期(与此日期不同)使用相同的创建例程将 OK 插入字段。

我错过了什么?谢谢!

最佳答案

我正在使用@CD001 的建议并将日期设置为空。

我现在的迁移是:

$table->timestamp('end_date')->nullable();

然后不再像这样检查 9999 日期:

if($endDate->year == 9999) {

我这样检查:

if(! $endDate) {

这行得通。谢谢@CD001!

关于PHP Carbon 和 MySQL 将 9999-31-12 插入到表中最终为 0000-00-00,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39127300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com