繁体   English   中英

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

[英]How to get last record by date but a datatype varchar

我正在尝试从数据类型为varchar的表中获取数据,但是我需要它使用date来选择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

首先,根据您的数据库列"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转换为date并将其与Viren Panchal建议的$ compare进行比较 ,但将日期格式从'dmY'更改为'Ymd'的问题,因为Mark Ba​​ker比较日期中的答案不起作用,也通过使用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 md吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM