Laravel 时间戳

Laravel timestamp

我的数据库中有这些数据

2018-03-14 01:22:48 
2018-03-14 01:22:44 
2018-03-14 01:22:40 
2018-03-14 01:22:36 
2018-03-14 01:22:32 
2018-03-14 01:22:28
2018-03-17 01:22:28

我在我的网站上使用 Laravel site.I 只是想输出一个来自所有日期的特定日期

这是我想要达到的:

2018-03-14
2018-03-17

实现该结果的本机示例 SQL:

 SELECT DATE(t.mycol) AS mycol 
   FROM mytable t
  GROUP
     BY DATE(t.mycol)

还有其他查询模式可以达到相同的结果,例如:

 SELECT DISTINCT DATE(t.mycol) AS mycol 
   FROM mytable t

如果您的数据是作为字符串检索的,您可以执行以下操作:

<?php
$datesString = "2018-03-14 01:22:48 2018-03-14 01:22:44 2018-03-14 01:22:40 2018-03-14 01:22:36 2018-03-14 01:22:32 2018-03-14 01:22:28 2018-03-17 01:22:28";
$datesArray = [];
$dateTimeArray = explode(" ", $datesString);
foreach($dateTimeArray as $index=>$date) {
    if($index % 2 == 0) {
        $datesArray[] = $date;
    }
}

$firstDate = $datesArray[0];
$lastDate = $datesArray[sizeOf($datesArray)-1];

echo $firstDate." - ".$lastDate;
?>

如果您的数据是作为数组检索的,您可以执行以下操作:

<?php
$dateTimeArray  = [
    "2018-03-14 01:22:48", 
    "2018-03-14 01:22:44", 
    "2018-03-14 01:22:40", 
    "2018-03-14 01:22:36",
    "2018-03-14 01:22:32",
    "2018-03-14 01:22:28", 
    "2018-03-17 01:22:28"
];

$datesArray = [];

foreach($dateTimeArray as $dateTime) {
   $datesArray[] = explode(" ", $dateTime)[0];
}

$firstDate = $datesArray[0];
$lastDate = $datesArray[sizeOf($datesArray)-1];

echo $firstDate." - ".$lastDate;
?>

编辑:

或者如果你想在数据库端完成,你可以只查询日期字段的最小值和最大值。如下回答

希望对您有所帮助:)

就像 Laravel Docs 中显示的那样,您可以对找到的结果使用 unique 方法。

假设您的日期来自用户 table:

DB::table('users')
  ->where('company', 'Google')
  ->unique('date')
  ->values()
  ->all();

在 Eloquent 模型文件中:

<?php // User.php for example

class User extends Model {

    protected $casts = [
        'dateColumn' => 'date',
    ];

    // You can now use $user->dateColumn and you will get back dates
    // $user->dateColumn->format('Y-m-d'); // 2018-03-14

}