当前位置: 首页 > 知识库问答 >
问题:

laravel sqlsrv-无法创建时间戳()

公西永嘉
2023-03-14

我正在将L5.1.x中的现有项目迁移到运行server 2012和SQL server 2012的新服务器。

我在使用表的时间戳()字段时遇到了一些问题。当生病时,在我的计划中添加

$table->timestamps();

我将得到created_at和updated_at类型为"datetime"的列。

但是,当我尝试将模型添加到这个数据库时,新的配置总是出现错误:

QueryException: Unable to convert an nvarchar Value to and datetime Value ....

当我禁用模型中的时间戳字段时,一切正常:

public $timestamps = false;

.. 但当然,在创建时和更新时没有值

我不知道是什么导致了这个问题-有什么想法吗?我可以手动将created_at和updated_at字段设置为“GETDATE()”——但我想使用Laravels base功能。

共有1个答案

景鹏飞
2023-03-14

好的,我发现问题了-Laravel创建的日期时间格式为:

"Y-m-d H:i:s.u"

但是SQL服务器想要的格式是:

"Y-d-m H:i:s"

因此,当您使用以下内容更新模型函数时:

public function fromDateTime($value)
{
    return Carbon::parse(parent::fromDateTime($value))->format('Y-d-m H:i:s');
}

您可以将日期格式转换为SQL Server的正确值(不知道为什么是Y-d-m,不是我的服务器;)

 类似资料:
  • 创建时间Created Created可以让您在数据插入到数据库时自动将对应的字段设置为当前时间,需要在xorm标记中使用created标记,如下所示进行标记,对应的字段可以为time.Time或者自定义的time.Time或者int,int64等int类型。 type User struct { Id int64 Name string CreatedAt time.Ti

  • 我的代码更长,但我没有复制所有的代码,我看到程序停在这里 对不起我的英语。

  • 当我尝试将部署创建为类型作业时,它不会提取任何图像。 下面是. yaml: 你能在这里引路吗? 问候,维卡斯

  • 我试图在插件激活时创建表,我尝试在类内创建相同的函数并从构造函数调用它,我尝试在类外调用它,最后我尝试创建另一个php文件来使用调用它,但没有成功 插件代码: installer.php 即使我把所有的东西都打对了,也没有任何东西能用

  • 问题内容: 假设我在, 我想抽出时间来创作。是否有类似的东西 ? 问题答案: Redis不存储此信息。 您可以使用单独的密钥:

  • 因此,我的任务是创建一个 Time 类,该类保存一小时值和一分钟值来表示时间。我将使用“军事时间”,因此12:01 am是0001,1 pm是1300。我可以假设有效的军事时间范围从0000到2359。有效标准时间范围为上午 12:00 至晚上 11:59。时间应包括两个构造函数: Time() -将时间设置为1200的默认构造函数。Time(int h,int m) -如果h介于1和23之间,则