簡體   English   中英

PHP - MySQL:從表中獲取兩個日期之間的日期行

[英]PHP - MySQL: Get rows from table where date between two dates

我有一個問題,mysql獲取兩個日期之間的行。

該列是res_birthday (VARCHAR) ,日期看起來像30.11.1970

現在我必須得到生日在01.01.之間的客戶01.01. 10.01. ,這一年沒關系。

我嘗試了很多解決方案:

STR_TO_DATE(`res_birthday`, '%d.%m')

但我無法將它與開始和結束日期進行比較。

知道如何解決這個問題嗎?

編輯:

以下是一些代碼與下面提到的解決方案,但它不起作用。

$query = mysql_query("SELECT * FROM `jtmpl2_chronoforms_data_test_reservierung` WHERE MONTH(STR_TO_DATE(`res_birthday`, '%d.%m.%y')) = 5 AND DAYOFMONTH(STR_TO_DATE(`res_birthday`, '%d.%m.%y')) = 10;");

     while($info = mysql_fetch_array( $query )) 



    function createCodeOrg($query){
     while($info = mysql_fetch_array( $query )) 
    { 
        $code = '<tr>
                            <td>'.$info['res_anrede'].'</td>
                        <td>'.ucfirst($info['res_vorname']).'</td>
                        <td>'.ucfirst($info['res_nachname']).'</td>
                        <td>'.ucfirst($info['res_strasse_hnr']).'</td>      
                        <td>'.$info['res_plz'].'</td>               
                        <td>'.ucfirst($info['res_ort']).'</td>
                        <td>'.$info['res_geburtstag'].'</td>    
                        <td><a href="mailto:'.$info['res_email'].'">'.$info['res_email'].'</a></td>                 

                      </tr>';

    echo $code;
    } 
}
select * from your_table
where MONTH(STR_TO_DATE(res_birthday, '%d.%m.%Y')) = 1
and DAYOFMONTH(STR_TO_DATE(res_birthday, '%d.%m.%Y')) between 1 and 10

SQLFiddle演示

您的問題是您將日期存儲為varchars。 如果您使用DATEDATETIME字段,這將刪除數據庫能夠自動執行的操作:

SELECT ...
FROM ...
WHERE res_birthday BETWEEN 'yyyy-mm-dd' AND 'yyyy-mm-dd'

現在轉換你的字段,你的問題基本上消失了。

我相信這就是你要找的東西:

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

資料來源: http//www.w3schools.com/sql/sql_between.asp

暫無
暫無

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

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