如何按日期获取最后一条记录,但数据类型为 varchar



我正在尝试从数据类型为 varchar 的表中获取数据,但我需要它按日期使用 where 子句选择过去 2 天。

在这里,我已从此链接尝试:

$query = $this
    ->db
    ->select('*, COUNT(*) as cnt')
    ->where('STR_TO_DATE(created_at,"%d-%m-%Y") >=', '(CURDATE() - INTERVAL 2 DAY)')
    ->group_by('client')
    ->order_by('cnt', 'DESC')
    ->get('histprob');

但结果是显示我表上的所有数据,而不是仅仅过去了两天。我的列created_at如下所示: 06-02-2019 23:00 <</p>

div class="one_answers">

首先创建一个日期变量以根据数据库列进行比较"created_at"="06-02-2019 23:00"

$compare = date('d-m-Y G:i', strtotime('-2 days'));

然后更改 where 子句,如下所示。

->where('created_at >=',$compare);

根据您的评论,@Viren answe 不适用于不同的月份,因此您也可以尝试:

$currentDate = date('d-m-Y G:i');
$twoDaysOld = date('d-m-Y G:i', strtotime('-2 days'));
->where('created_at >=',$twoDaysOld); // greator equal to old date
->where('created_at <=',$currentDate); // less then and equal to current date

在这里,我是两个日期之间的日期范围。

我已经通过将created_at转换为日期来解决,然后按照 Viren Panchal 的建议将其与$compare进行比较,但将日期格式从"d-m-Y"更改为"Y-m-d",因为马克贝克在比较日期中的答案不起作用也通过使用STR_TO_DATE转换created_at。这是我完成的代码:

$date7 = date('Y-m-d', strtotime('-7 days'));
$query = $this->db->select('*, COUNT(*) as cnt')->where('STR_TO_DATE(created_at,"%d-%m-%Y") >=', $date7)->group_by('client')->order_by('cnt', 'DESC')->get('histprob');

那么,比较日期应该使用 Y m d?

相关内容

  • 没有找到相关文章

最新更新