簡體   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