繁体   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