如何按日期获取最后一条记录但数据类型为varchar
How to get last record by date but a datatype varchar
我正在尝试从数据类型为 varchar 的 table 中获取数据,但我需要它 select 最近 2 天使用 where 子句 by日期。
这里我试过 this link:
$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');
但结果显示的是我 table 上的所有数据,而不是仅过去了两天。
我的专栏 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);
我通过将 created_at
转换为日期来解决,然后按照 Viren Panchal 的建议将其与 $compare 进行比较,但改变了日期格式从 'd-m-Y' 到 'Y-m-d' 作为 Mark Baker 在 compare dates not working 中的回答也通过使用 [=26= 转换了 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吗?
根据您的评论,@Viren 的回答不适用于不同的月份,因此您也可以这样尝试:
$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
我这里是两个日期之间的日期范围。
我正在尝试从数据类型为 varchar 的 table 中获取数据,但我需要它 select 最近 2 天使用 where 子句 by日期。
这里我试过 this link:
$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');
但结果显示的是我 table 上的所有数据,而不是仅过去了两天。
我的专栏 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);
我通过将 created_at
转换为日期来解决,然后按照 Viren Panchal 的建议将其与 $compare 进行比较,但改变了日期格式从 'd-m-Y' 到 'Y-m-d' 作为 Mark Baker 在 compare dates not working 中的回答也通过使用 [=26= 转换了 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吗?
根据您的评论,@Viren 的回答不适用于不同的月份,因此您也可以这样尝试:
$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
我这里是两个日期之间的日期范围。