我想从数据库中获取给定格式的日期

时间:2019-10-05 16:37:13

标签: php laravel

我想以这种格式示例“ 2019年8月20日”获取日期,并从数据库中获取200个单词的描述,因此我正在使用以下代码:-

public function wsUserActivity(){
    $request = Input::all();
    //try {
        //$user_id = $request['user_id'];
        $no=isset($request['page_number'])?$request['page_number']:0;
        $nos=isset($request['count'])?$request['count']:10;
        $skp=$no*$nos;

        $array_json_return = array('status' => '1','msg' => 'Success');

        $u_activity = array();
        $u_articles = DB::table('mst_article')->select('title', DATE_FORMAT('created_at', "%d-%b-%Y"), DATE_FORMAT('updated_at', "%d-%b-%Y"), SUBSTRING('description',0,200), 'imported', 'import_url')->where('user_id_fk', $user_id);
        $u_meetup = DB::table('mst_meetup')->select('title', DATE_FORMAT('created_at', "%d-%b-%Y"), DATE_FORMAT('updated_at', "%d-%b-%Y"), SUBSTRING('description',0,200), 'imported', 'import_url')->where('user_id_fk', $user_id);
        $u_question = DB::table('mst_question')->select('title', DATE_FORMAT('created_at', "%d-%b-%Y"), DATE_FORMAT('updated_at', "%d-%b-%Y"), SUBSTRING('description',0,200), 'imported', 'import_url')->where('user_id_fk', $user_id);
        $u_job = DB::table('mst_job')->select('title', DATE_FORMAT('created_at', "%d-%b-%Y"), DATE_FORMAT('updated_at', "%d-%b-%Y"), SUBSTRING('description',0,200), 'imported', 'import_url')->where('user_id_fk', $user_id);
        $u_education = DB::table('mst_education')->select('title', DATE_FORMAT('created_at', "%d-%b-%Y"), DATE_FORMAT('updated_at', "%d-%b-%Y"), SUBSTRING('description',0,200), 'imported', 'import_url')->where('user_id_fk', $user_id);
        $u_activity= DB::table('mst_event')->select('title', DATE_FORMAT('created_at', "%d-%b-%Y"), DATE_FORMAT('updated_at', "%d-%b-%Y"), SUBSTRING('description',0,200), 'imported', 'import_url')->where('user_id_fk', $user_id)->union($u_articles)->union($u_meetup)->union($u_question)->union($u_job)->union($u_education)->latest()->get();


        $array_json_return['u_activity'] = $u_activity;

    /*} catch (\Exception $e) {
        $array_json_return = $this->api_default_fail_response(__function__, $e);
    }*/

    echo json_encode($array_json_return);
}

但是它给出了这个错误:

  

date_format()期望参数1为DateTimeInterface,指定字符串

现在出现此错误:

  

SQLSTATE [42S22]:找不到列:1054'order子句'中的未知列'created_at'(SQL:(select title,DATE_FORMAT(created_at,“%d-%b-%Y”), DATE_FORMAT(updated_at,“%d-%b-%Y”),SUBSTRING(description,0,200),importedimport_url来自p1036_mst_event,其中user_id_fk为空)联合(选择title,DATE_FORMAT(“ created_at”,“%d-%b-%Y”),DATE_FORMAT(updated_at,“%d-%b-%Y”),SUBSTRING(description,0,200),{ {1}},imported中的import_url,其中p1036_mst_article为空)联合(选择user_id_fk,DATE_FORMAT(created_at,“%d-%b-%Y”), DATE_FORMAT(updated_at,“%d-%b-%Y”),SUBSTRING(description,0,200),titleimported来自import_url,其中p1036_mst_meetup为空)联合(选择user_id_fk,DATE_FORMAT(created_at,“%d-%b-%Y”),DATE_FORMAT(updated_at,“%d-%b-%Y”),SUBSTRING(description,0,200),{{1 }},title中的imported,其中import_url为空)联合(选择p1036_mst_question,DATE_FORMAT(created_at,“%d-%b-%Y”),DATE_FORMAT( (从user_id_fktitle为空的SUBSTRING(description,0,200),importedimport_url,其中p1036_mst_job为空)union_at,“%d-%b-%Y”)联合(选择user_id_fk,DATE_FORMAT(created_at,“%d-%b-%Y”),D ATE_FORMAT(updated_at,“%d-%b-%Y”),SUBSTRING(description,0,200),titleimported来自import_url,其中p1036_mst_education为空)顺序由user_id_fk desc)

2 个答案:

答案 0 :(得分:1)

请您检查一下-

$user_id = $request['user_id'];
$u_articles = DB::table('mst_article')
    ->select('title', DB::raw('DATE_FORMAT(created_at, "%d %b %Y") as created_at'), DB::raw('DATE_FORMAT(updated_at, "%d %b %Y") as updated_at'), DB::Raw('SUBSTRING(description, 1, 200) as description'), 'imported', 'import_url')
    ->where('user_id_fk', $user_id)
    ->get();
dd($u_articles);

答案 1 :(得分:0)

代替以下内容:

->select('title', DATE_FORMAT('created_at', "%d-%b-%Y"), 

使用:

->select('title', \DB::raw('DATE_FORMAT(created_at, "%d-%b-%Y") as created_at'), 

说明:

您使用的是DATE_FORMAT,PHP假定您使用的是PHP方法Date_Format,而不是mysql的DATE_FORMAT方法。使用DB :: raw方法,并以DB :: raw方法编写mysql代码以获取所需格式的日期。