[英]Get data from a database that is between two dates
我正在編寫一個系統,將顯示選定月份的數據。 用戶可以選擇要查看的月份,然后創建一個類似.com / page.php?month = 03的URL,您可能會猜到該頁面會采用這個想法,然后使用它從數據庫中獲取數據。從那個月開始。
現在基於我在vars中創建的URL中的月份,基於此示例的$ startdate $ enddate開始日期為2011-03-01,然后我將29或30加上日期的天數,具體取決於該月份是否31或30天。 好吧,我這樣的日期:
$startdate = mktime(0,0,0,date("$month"),date("01"),date("2011"));
if( $month==04 || $month==06 || $month==9 || $month==11)
{
$enddate = mktime(0,0,0,date("$month"),date("01")+29,date("2011"));
}
else
{
$enddate = mktime(0,0,0,date("$month"),date("01")+30,date("2011"));
}
現在,當我嘗試使用這些變量從數據庫中獲取數據時,它似乎不起作用,這是查詢:
$getresults = mysql_query("SELECT * FROM table1 WHERE date BETWEEN $startdate AND $enddate ORDER BY date ASC");
關鍵是,如果我將vars更改為硬編碼日期,那么它的工作就很划算……有人有任何想法嗎? 我以為這與格式化日期有關嗎? 在我的數據庫中,其“ Ymd”與php中的相同。
感謝人們對我的真正幫助。
mktime
將日期生成為Unix時間戳(例如'1317046059'),但是您的表以其他格式(例如'2011-09-26')存儲日期。 為了使查詢有效,您需要將時間戳轉換為適當的格式:
$enddate = date( 'Y-m-d', mktime(0,0,0,date("$month"),date("01")+29,date("2011")) );
更新:
基於將日期存儲為時間戳的新注釋,您將需要采用以下方式格式化日期:
$enddate = date( 'Y-m-d h:i:s', mktime(0,0,0,date("$month"),date("01")+29,date("2011")) );
您應該在關鍵位置使用幾個var_dump語句來評估代碼。 這樣,您可以確切地知道數據的樣子,包括其格式,然后可以弄清楚如何以所需的方式格式化該日期。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.