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

使用 Laravel 和 MSSQL 将 nvarchar 转换为日期时间数据类型时出错

干亮
2023-03-14

我在IIS上成功安装了Laravel。我也成功地用laravel连接了MSSQL数据库。我运行artisan命令< code>php artisan make:auth和< code>php artisan migrate。制作一个登录/注册页面。现在,当我注册一个新用户时,我得到一个错误。:

SQLSTATE[22007]:[Microsoft][ODBC驱动程序17 forSQLServer][SQLServer]Bei der Konvertierung eines nvarchar-Datentyps in einen datetime-Datentyp liegt der Wert auúerhalb des gültigen Bereichs.(SQL:插入到[用户]([名称],[电子邮件],[密码],[updated_at],[created_at])值(john doe,j.doe@example.com,$2y10$zPpJKp.clN8/SrhBhrupmO1ydWFb6UmrAUaD0Wid7fQHt85ieSwNi,2018-04-24 10:03:26.286,2018-04-24 10:03:26.286))

这翻译成英语:

nvarchar数据类型转换为datetime数据类型导致datetime值超出范围。“

我的迁移如下所示:

public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->tinyInteger('active')->default(1);
            $table->rememberToken();
            $table->timestamps();
        });
    }

在MSSQL中,我使用了< code > SQL _ Latin1 _ General _ CP1 _ CI _ AS 。有人知道问题出在哪里吗?

更新'快速解决方案:我将mssql列created_at和updated_at更改为nvarchars(50)

UPDATE1 另一种解决方案是用此方法覆盖它

public function fromDateTime($value)
{
    // Only for MSSQL
    if(env('DB_CONNECTION') == 'sqlsrv') {
        return Carbon::parse(parent::fromDateTime($value))->format('Y-d-m H:i:s:000');
    }
    return $value;
}

共有2个答案

劳宇
2023-03-14

如果Jefers的答案不起作用,请在您的模型中尝试:

public function getDateFormat(){
    return 'Y-d-m H:i:s.v';
}
傅宏恺
2023-03-14

如果有人遇到这个问题,我使用受保护的$dateFormat = 'd-m-Y H:i:s';根据需要在模型中设置格式。

 类似资料:
  • 问题内容: 我已经搜索了这个很棒的论坛并在Google周围搜索,但无法解决。 我们有两个表(相信我,我与这些表无关)。这两个表都有一个名为的列。 然而,在一个表中,数据类型就是和在另一个表中,这是。 我们从选择这里被定义为和保存该ID写入其中被定义为。 作为数据类型descrepancy的结果,我们得到错误转换数据类型来。 在不弄乱数据库的情况下,我想强制使用摆脱该错误。 有什么想法我在下面的代码

  • 本文向大家介绍Java将日期类型Date时间戳转换为MongoDB的时间类型数据,包括了Java将日期类型Date时间戳转换为MongoDB的时间类型数据的使用技巧和注意事项,需要的朋友参考一下 存了一个时间类型(Date)的数据到mongo数据库中,但是前台显示的是一串数字。继而引发了如下问题: Java里面如何把 时间戳 1477387464495 转换为 2016-10-25 17:24:2

  • 问题内容: 我在代码隐藏中收到转换失败的错误。我的代码如下: 我收到以下错误: 将nvarchar值转换为数据类型int时,转换失败。 在这里必须进行哪些更改? 问题答案: 我想这是一个整数,但您正在分配一个字符串。因此,这可能会解决它: 编辑:由于您已评论该会话存储了用户名,但该列是一个int列,因此您有三个选择: 更改会话以存储用户标识而不是名称 更改列以存储用户名 从存储用户名的表中选择用户

  • 问题内容: 有谁知道如何将JS dateTime转换为MySQL datetime?还有一种方法可以向JS日期时间添加特定的分钟数,然后将其传递给MySQL日期时间? 问题答案: 尽管JS确实拥有足够的基本工具来执行此操作,但它相当笨拙。

  • 问题内容: 我已经尝试过一百万种不同的方法,但是没有用。任何帮助将非常感激。 上面的方法不起作用。 基本上,我想做的是获取纪元时间并将其转换为澳大利亚时间。我的当地时间是+05.30,但是我当然不希望这成为促成这种转化的因素。 编辑- 当我运行您的确切代码时,输​​出 时代1318388699000 2011年10月12日星期三08:34:59 GMT + 05:30 12/10/2011 03:

  • 嗨,我有一个android应用程序,使用返回Int(或Long)类型的时间戳。我想将其转换为人类阅读器日期时间(根据设备时区) 例如,1175714200转换为GMT:2007年4月4日星期三19:16:40 GMT您的时区:2007年4月5日,3:16:40 AM GMT 8:00 我使用这个函数进行转换,但似乎没有返回正确的结果(所有结果都像(15/01/1970 04:04:25),这是不正