【问题标题】:How to change date format in laravel Query Builder from "2016-03-12" to "12-Mar-2016" [duplicate]如何将laravel Query Builder中的日期格式从“2016-03-12”更改为“12-Mar-2016”[重复]
【发布时间】:2016-06-24 21:26:48
【问题描述】:

如何将 laravel 中的日期格式从“2016-03-12”更改为“12-Mar-2016”

$results = DB::table('customers as cust')
        ->where('cust.id',$id)
        ->select("cust.*","cust.cust_dob as dob")
        ->first();

我应该使用 laravel 原始查询吗?

我试过了,

 ->select("cust.*","DATE_FORMAT(cust.cust_dob, '%d-%M-%Y') as formatted_dob")

请提供这方面的任何指南。

【问题讨论】:

  • 你可以使用原始查询生成器 .. 它看起来像普通查询

标签: php laravel laravel-5 laravel-query-builder


【解决方案1】:

您可以随时使用 Carbon 的 ->format('m/d/Y'); 更改格式。

或者您可以只使用selectRaw 来构建您的查询。

此外,您可以通过将$dateFormat 设置为您要使用的日期格式来尝试使用日期修改器: https://laravel.com/docs/5.1/eloquent-mutators#date-mutators

【讨论】:

    【解决方案2】:

    由于除了使用原始查询之外别无他法,我就是这样使用的。它对我有用。

    ->select("cust.*", DB::raw("DATE_FORMAT(cust.cust_dob, '%d-%b-%Y') as formatted_dob"))
    

    【讨论】:

      【解决方案3】:

      Laravel 使用 Carbon 作为日期时间,因此您可以像以下代码一样编写它:

      $results = DB::table('customers as cust')
                  ->where('cust.id',$id)
                  ->select("cust.*","cust.cust_dob as dob")
                  ->first();
      echo $results->dob->format('d-m-Y');
      

      【讨论】:

        【解决方案4】:

        Laravel 提供了定义访问器/修改器的机会。在这种情况下,您可以使用它而不是通过查询来完成。

        我会在客户模型类中添加方法

        public function getCustDobAttribute($value) {
            return //Format the value Which represent the value in database;
        }
        

        示例: 想象一下,您想要检索客户名称,您想要将其作为 First Charterer 资本​​,其余的则很小。

        public function getFirstNameAttribute($value)
        {
            return ucfirst($value);
        }
        

        参考:

        https://laravel.com/docs/5.1/eloquent-mutators#accessors-and-mutators

        【讨论】:

          【解决方案5】:

          尝试使用这个:

          $results = DB::table('customers as cust')
                       ->where('cust.id',$id)
                       ->select(DB::raw('DATE_FORMAT(cust.cust_dob, "%d-%b-%Y") as formatted_dob'))
                       ->first();
          

          【讨论】:

          • 对每一行运行 date_format,如果数字增加,性能会下降
          猜你喜欢
          • 2016-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-02
          • 1970-01-01
          • 2020-01-19
          相关资源
          最近更新 更多