Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择两个日期之间的数据?_Php_Mysql_Select_Date - Fatal编程技术网

Php 选择两个日期之间的数据?

Php 选择两个日期之间的数据?,php,mysql,select,date,Php,Mysql,Select,Date,我正在使用一个数据库来存储日志,其中有一列“date”,它保存日志插入的日期。日期的格式为“MM/DD/YY”。请任何人建议我如何在两个特定日期之间选择数据。例如,我尝试了以下方法: $from_date = "01/01/12"; $to_date = "02/11/12"; $result = mysql_query("SELECT * FROM logs WHERE date >= " . $from_date . " AND date <= " . $to_date . "

我正在使用一个数据库来存储日志,其中有一列“date”,它保存日志插入的日期。日期的格式为“MM/DD/YY”。请任何人建议我如何在两个特定日期之间选择数据。例如,我尝试了以下方法:

$from_date = "01/01/12";
$to_date = "02/11/12";

$result = mysql_query("SELECT * FROM logs WHERE date >= " . $from_date . " AND date <= " . $to_date . " ORDER by id DESC");

while($row = mysql_fetch_array($result)) {
// display results here
}
$from_date=“01/01/12”;
$to_date=“2012年11月2日”;

$result=mysql\u query(“从日志中选择*,其中日期>=”$FROM\u date.”和date您需要在日期值“01/01/12”中添加单引号:

$from_date = "01/01/12";
$to_date = "02/11/12";

$result = mysql_query("SELECT * FROM logs WHERE date >= '" . $from_date . "' AND date <= '" . $to_date . "' ORDER by id DESC");
$from_date=“01/01/12”;
$to_date=“2012年11月2日”;

$result=mysql\u查询(“从日志中选择*,其中日期>=”“$FROM\u日期。””和日期使用
BETWEEN
关键字:

"SELECT * FROM logs WHERE date BETWEEN '" . $from_date . "' AND  '" . $to_date . "'
ORDER by id DESC"

您可以将字段强制转换为日期,然后在“开始日期”和“结束日期”之间进行选择

SELECT * FROM logs WHERE date STR_TO_DATE(date, '%m/%d/%Y') between STR_TO_DATE(from_date, '%m/%d/%Y') and STR_TO_DATE(to_date, '%m/%d/%Y')

问题的答案取决于用于存储
日志
表中的
日期
字段的数据类型


SQL(在您的例子中是MySQL)完全能够比较日期。通常会使用
BETWEEN..AND..
运算符,但如果
date
的类型为CHAR(或VARCHAR),则该运算符将无法正常工作-在这种情况下,您需要在比较之前将
日期
字段转换为日期时间。

将日期参数更改为Unix时间戳,然后进行比较。以下是代码:

$from_date = "2019/01/12";
$to_date = "2019/01/15";

$from_date_unix = strtotime($from_date);
$to_date_unix = strtotime($to_date);    

$result = mysql_query("SELECT * FROM logs WHERE date >= " . $from_date_unix . " AND date <= " . $to_date_unix . " ORDER by id DESC");
while($row = mysql_fetch_array($result)) {
// display results here
}
$from_date=“2019/01/12”;
$to_date=“2019/01/15”;
$from\u date\u unix=strottime($from\u date);
$to\u date\u unix=strottime($to\u date);

$result=mysql\u query(“SELECT*FROM logs WHERE date>=”,$FROM\u date\u unix.”以及它将起作用的日期。您必须将参数设置为
date(“”)
日期'$param'
str\u to\u date()
转换('$param','%y/%m/%d'))
…您是否考虑过使用真实日期列或将格式更改为
YY/MM/DD
?如果我必须在两个日期之间找到两个日期……例如,从日志中选择*,其中date1和date2介于'。$FROM_Date.''和'。$to_Date.'@Sarfraz