laravel时间戳

pn9klfpd  于 2021-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(280)

我的数据库里有这些数据

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,我只想从所有的日期中输出一个单独的日期
这是我想要达到的:

2018-03-14
2018-03-17
d5vmydt9

d5vmydt91#

在雄辩的模型文件中:

<?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

}
rks48beu

rks48beu2#

就像在拉威尔文档中显示的,你可以使用 unique 方法对您找到的结果。
假设您的日期来自用户表:

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

axr492tv3#

实现该结果的本机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
ldxq2e6h

ldxq2e6h4#

如果以字符串形式检索数据,可以执行以下操作:

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

编辑:
或者,如果希望在数据库端执行此操作,则可以只查询日期字段的最小值和最大值。如下面的问题所回答
我希望这有帮助:)

相关问题