[英]Get results order by date in MySQL if date field's datatype is 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 Baker在比較日期中的答案不起作用,也通過使用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.