簡體   English   中英

從兩個日期之間的數據庫獲取數據

[英]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.

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