Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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 使用mysql选择日期_Php_Mysql - Fatal编程技术网

Php 使用mysql选择日期

Php 使用mysql选择日期,php,mysql,Php,Mysql,我正在使用以下代码从数据库中获取日期: $con= mysqli_connect("localhost","root","123","core"); $sql=mysqli_query($con,"SELECT * FROM transaction where date BETWEEN '7/1/204' AND '7/31/2014' ") or die ("error"); while($row=mysqli_fetch_array($sql)){ $DBDate=$

我正在使用以下代码从数据库中获取日期:

$con= mysqli_connect("localhost","root","123","core");

$sql=mysqli_query($con,"SELECT * FROM transaction where date BETWEEN '7/1/204' AND '7/31/2014' ") or die ("error"); 

    while($row=mysqli_fetch_array($sql)){

    $DBDate=$row['date'];

    $D=strtotime($DBDate);
    echo date('m/j/Y',$D). "<br>"; 
    }
当我选择2014年7月1日至2014年7月31日之间的范围时,结果中不包括2014年7月7日。显示了2014年7月1日和2014年7月10日


请帮助我获取上述2014年7月7日的日期范围,并告诉我2014年7月7日发生了什么。

如果您有
VARCHAR
列,则
BETWEEN
使用字母顺序,这在处理日期时并不特别有用

首先需要解析字符串列,并尝试从每一行获取有效日期。为此,您可以使用具有适当格式代码的函数。当然,不可解析的日期将产生
NULL
,即使它们看起来正确


(如果还不算太晚,就修改数据库设计。)

听起来像是在使用文本列存储那些“日期”——如果是这样,现在就修改它,并使用MySQL提供的日期/时间类型。您的日期列似乎是
VARCHAR
类型。您最好将
DATE
与MySQL的正确日期格式结合使用。您应该使用
DATE
DATETIME
列作为日期,而不是
VARCHAR()
。然后,您可以在2014-07-01和2014-07-07之间使用
,以便我同意。这就像将数字存储为“1”、“2”、“3”并尝试将它们相加。这可能是可以做到的,但不必要的困难。
    balance     date

    500       7/1/2014
    1000      7/7/2014
    800       7/10/2014
    1500      8/2/2014