【问题标题】:laravel 5.4, how to insert a timestamp (mysql)laravel 5.4,如何插入时间戳(mysql)
【发布时间】:2018-03-30 13:41:32
【问题描述】:

在我们的 laravel 迁移中,我们插入应用所需的静态数据(国家、货币等)。

我们正在尝试插入带有时间戳字段的行,但不知道如何将其设置为特定的日期/时间。

我们已经尝试过 time() 并设置了标准的日期格式,例如:

DB::table('test')->insert(['id'=>1,'start_at'=>time(), 'end_at'=>'2050-01-01 00:00:00']);

两个时间戳列都以 0000-00-00 00:00:00 结尾。

有什么想法吗?

【问题讨论】:

  • 尝试使用 Carbon start_at'=>tCarbon::now() 不要忘记在顶部添加 use Carbon\Carbon :)

标签: mysql laravel timestamp migration


【解决方案1】:

time() 返回一个 Unix 时间戳,但 MySQL 想要一个 YYYY-mm-dd HH:ii:ss 时间戳。您可以使用例如date('Y-m-d H:i:s') 或试试Carbon

顺便说一句,start_at 之前还缺少一个 '。

【讨论】:

    【解决方案2】:

    好的,我找到了一种解决方案(Joel & Maraboc 提供的碳选项可能会更好)

    $now= new DateTime;
    $future = $now->add(new DateInterval('P20Y'));
    DB::table('test')->insert(['id'=>1,'start_at'=>$now, 'end_at'=>$future]);
    

    【讨论】:

      【解决方案3】:

      与 碳:

      $dt = Carbon::parse('2012-9-5 23:26:11');
      var_dump($dt->timestamp);     //int(1346901971)
      

      【讨论】:

        【解决方案4】:

        您也可以让数据库服务器完成工作:

        'start_at'=>DB::raw('now()')
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-09-11
          • 1970-01-01
          • 2013-11-21
          • 2016-03-06
          • 2012-01-29
          • 2013-02-17
          • 1970-01-01
          相关资源
          最近更新 更多