簡體   English   中英

MySQL獲取兩個日期之間的表結果

[英]Mysql Get table result between two dates

我知道我的問題與已經回答的其他問題相似,但是我的問題有所不同,因為我需要一些替代方案或建議,而無需其他方法。

我的問題是:我想根據用戶的需要在兩個日期或一個日期之間獲取值。

在此處輸入圖片說明

當用戶請求一天的數據.. php查詢數據成功..但問題是當請求的數據在兩個日期之間時。

$query = $this->db->query("SELECT * FROM `meta_receipt_data` 
WHERE  `meta_transaction_date` >= '$first_date' AND
`meta_transaction_date` <= '$second_date' ");
        return $query->result();

我得到一個空集...

所以我認為可能是這些值未正確提交。因此我回顯了這些值以查看它們是否正確。 我發現它們是正確的...

$ first_date = 09/13/2014;
$ second_date = 2014年9月19日;

但是如果我嘗試把價值

$query = $this->db->query("SELECT * FROM `meta_receipt_data` 
WHERE  `meta_transaction_date` >= '09/13/2014' AND
`meta_transaction_date` <= '09/19/2014' ");
        return $query->result();

我得到的結果是正確的..所以有什么地方做錯了嗎?

MySQL有一個稱為Between的內置函數,您可以像這樣使用:

SELECT * FROM table_name WHERE date_column BETWEEN 'start_date_parameter' AND 'end_time_parameter'

就是這樣,將meta_transaction_date的類型更改為DATE 在傳遞DATE時,也請使用標准的'yyyy-mm-dd'

您的問題可能源於美國日期格式'mm/dd/yyyy'字符串排序,這對於編碼來說很糟糕。 如果希望以這種格式顯示DATE ,請在SELECT最終輸出時進行轉換。

嘗試先投射日期,然后使用between語句:

$query = $this->db->query("SELECT * FROM `meta_receipt_data` 
WHERE `meta_transaction_date` BETWEEN    
date_format(str_to_date('$first_date', '%d/%m/%Y'), '%Y-%m-%d') AND
date_format(str_to_date('$second_date', '%d/%m/%Y'), '%Y-%m-%d')");
$query = $this->db->query("SELECT * FROM `meta_receipt_data`
WHERE  `meta_transaction_date` >= '09/13/2014'
AND `meta_transaction_date` <= '09/19/2014' ");

由於上面的方法似乎工作正常,因此問題出在您的代碼中。

$query = $this->db->query("SELECT `meta_transaction_date` FROM meta_receipt_data WHERE
                           meta_transaction_date BETWEEN "
                          .date( "Y-M-d", ( strtotime($first_date) ) )." AND "
                          .date( "Y-M-d", ( strtotime($second_date) ) ) );

請注意,請勿使用SELECT *類的查詢,因為它們會降低應用程序的性能。 我只是讀了您對自己的問題的評論:

我已將類型設置為Varchar

不要那樣做。 最好使用DATE類型存儲日期。 您可以使用查詢:

ALTER TABLE `meta_receipt_data`
MODIFY `meta_transaction_date` DATE NOT NULL;`

好吧,這是假設您希望保留該列不接受空值。

我發現該值前后都有空格,因此我使用$first = trim($first_date); 問題解決了...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM