使用Laravel和MSSQL将{nvarchar转换为datetime数据类型时出错

时间:2018-04-24 10:25:32

标签: php laravel

我在IIS上成功安装了Laravel。我用laravel成功连接了MSSQL DB。我运行artisan命令php artisan make:authphp artisan migrate。进行登录/注册页面。现在,当我注册一个新用户时,我收到了一个错误。:

  

SQLSTATE [22007]:[Microsoft] [SQL Server的ODBC驱动程序17] [SQL   服务器] Bei der Konvertierung eines nvarchar-Datentyps in einen   datetime-Datentyp liegt derWertaußerhalbdesgültigenBereichs。   (SQL:插入[users]([name],[email],[password],[updated_at],   [created_at])值(john doe,j.doe @ example.com,   $ 2Y $ 10 $ zPpJKp.clN8 / SrhBhrupmO1ydWFb6UmrAUaD0Wid7fQHt85ieSwNi,   2018-04-24 10:03:26.286,2018-04-24 10:03:26.286))

这翻译成英文:

  

导致nvarchar数据类型转换为日期时间数据类型   超出范围的日期时间值。“

我的迁移看起来像这样:

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();
        });
    }
迁移后

和我的数据库看起来像这样: enter image description here

在MSSQL中,我正在使用SQL_Latin1_General_CP1_CI_AS。 有任何人知道这个问题是什么吗?

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

2 个答案:

答案 0 :(得分:0)

如果有人遇到这个问题,我解决了 protected $ dateFormat ='d-m-Y H:i:s'; //根据需要设置格式 在模型中。

答案 1 :(得分:0)

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

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