2013-10-02 30 views
0

當月開始如何呼應的currentdate在MySQL查詢PHP

<?php echo date("Y-m-1");?> 

當月月底

<?php echo date("Y-m-31");?> 


and this is mysql query 

$result = mysql_query("SELECT * FROM fuel where monthdate BETWEEN 'current month start' AND 'current month end' ORDER BY CAST(amount as SIGNED INTEGER) DESC LIMIT 4"); 

如何迴應這

<?php echo date("Y-m-1");?> 

    <?php echo date("Y-m-31");?> 

在此 BETWEEN「{YM -1}'和'{Ym-31}'

請幫我解決這個問題 感謝

+3

你一定要明白那不是每個月都有31天? – vascowhite

+0

您的monthdate列是什麼類型? – vascowhite

+0

是的,我知道,但31是最後一天,如果月有30天,所以它不是一個大問題,它顯示月開始到月底結束31如果31日期不存在,那麼它顯示30天結果 – user2468472

回答

1

如果您需要了解當前的年份和月份的記錄,你可以使用MySQL的EXTRACT功能,讓你當前的月份和執行=比較

SELECT * FROM fuel where 
EXTRACT(YEAR_MONTH FROM `monthdate`) = 
EXTRACT(YEAR_MONTH FROM CURRENT_DATE) 
ORDER BY CAST(amount as SIGNED INTEGER) 
DESC LIMIT 4 

注意確保列monthdate數據類型是正確的像date,datetime

EXTRACT

+0

我改變,但沒有結果顯示 – user2468472

+0

@ user2468472請參閱此**請注意確保列monthdate數據類型是適當的,如日期,日期時間** –

+1

是的,你現在我正在改變其工作很好謝謝 – user2468472

0

使用DATE_FORMAT如果您需要選擇一切從給定的月份:

$myDate = date('Y-m'); 
$sql = "SELECT * FROM `fuel` WHERE DATE_FORMAT('%Y-%m', `monthdate`) = '$myDate'"; 
1

您可以在純SQL做到這一點很容易,不與PHP時間hassling:

"SELECT * FROM fuel WHERE YEAR(monthdate) = YEAR(CURDATE()) AND MONTH(monthdate) = MONTH(CURDATE()) ORDER BY CAST(amount as SIGNED INTEGER) DESC LIMIT 4" 

而且,你不能指望無效日期以這樣的工作。

試試這個在SQL查詢:

`SELECT DATE('2013-02-28'), DATE('2013-02-31')` 

它將返回2013-02-28NULL。 MySQL期望一個VALID日期,否則它將不起作用。

+0

我替換代碼但沒有找到結果 – user2468472

+0

'monthdate'是日期字段嗎? –

1
Try this code woking fine. 
$result = mysql_query("SELECT * FROM fuel where monthdate BETWEEN (SELECT DATE_FORMAT(NOW() , '%Y-%m-1')) AND (SELECT DATE_FORMAT(NOW() , '%Y-%m-30')) ORDER BY CAST(amount as SIGNED INTEGER) DESC LIMIT 4");