【问题标题】:Error converting nvarchar to datetime data type using Laravel and MSSQL使用 Laravel 和 MSSQL 将 nvarchar 转换为日期时间数据类型时出错
【发布时间】:2018-10-04 13:48:55
【问题描述】:

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

SQLSTATE[22007]:[Microsoft][ODBC Driver 17 for SQL Server][SQL [Server]Bei der Konvertierung eines nvarchar-Datantyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs。 (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 数据类型转换为 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 中,我使用的是 SQL_Latin1_General_CP1_CI_AS。 有人知道问题出在哪里吗?

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

更新1 另一种解决方案是用这种方法覆盖它

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;
}

【问题讨论】:

    标签: php laravel


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-11
        • 1970-01-01
        • 2018-04-20
        • 1970-01-01
        • 1970-01-01
        • 2013-01-15
        • 2015-12-16
        • 2020-08-04
        相关资源
        最近更新 更多