如何在没有时间的情况下指定PHP MYSQL日期
这非常有效:如何在没有时间的情况下指定PHP MYSQL日期,php,mysql,mysqli,Php,Mysql,Mysqli,这非常有效: SELECT DISTINCT customers FROM customertable WHERE time_paid BETWEEN '2016-06-28 10:27:55' AND '2016-07-05 14:07:51'; 但是,由于我使用javascript datepicker让用户选择日期周期,并且只有日期但没有时间,这显然不起作用: SELECT DISTINCT customers FROM customertable WHERE time_paid
SELECT DISTINCT customers
FROM customertable
WHERE time_paid BETWEEN '2016-06-28 10:27:55' AND '2016-07-05 14:07:51';
但是,由于我使用javascript datepicker让用户选择日期周期,并且只有日期但没有时间,这显然不起作用:
SELECT DISTINCT customers
FROM customertable
WHERE time_paid BETWEEN '2016-06-28' AND '2016-07-05';
我的select语句是:$t1是较低的日期,$t2是较高的日期
$sql = "SELECT DISTINCT customertable FROM customer WHERE time_paid BETWEEN '$t1' AND '$t2'";
$result = mysqli_query($conn, $sql);
$rowcount = mysqli_num_rows($result);
有没有办法在select语句中插入一个连接的日期,例如“$t1”。12.00.00,以便在选择时处理数据库中的完整日期时间项?如果查询中的日期没有时间值 您可以将datetime值除以空格,然后检查它是否有时间 如果没有时间参数,那么只需添加00:00:00和23:59:59 请参见此示例:
function getCustomers($from, $to) {
$from = explode(' ', $from);
if(sizeof($from) != 2) {
$from = $from[0]. ' 00:00:00';
}
$to = explode(' ', $to);
if(sizeof($to) != 2) {
$to = $to[0]. ' 23:59:59';
}
// re-parsing datetime values to prevent sql injection
$from = date('Y-m-d H:i:s', strtotime($from));
$to = date('Y-m-d H:i:s', strtotime($to));
$q =
"SELECT DISTINCT customers
FROM customertable
WHERE time_paid >= '".$from."' AND time_paid <= '".$to."'";
// and so on...
}
函数getCustomers($from,$to){
$from=爆炸(“”,$from);
如果(sizeof($from)!=2){
$from=$from[0]。'00:00:00';
}
$to=爆炸(“”,$to);
如果(sizeof($to)!=2){
$to=$to[0]。'23:59:59';
}
//重新分析datetime值以防止sql注入
$from=日期('Y-m-d H:i:s',标准时间($from));
$to=日期('Y-m-d H:i:s',标准时间($to));
$q=
“选择不同的客户
来自customertable
其中时间支付>=“$from.”和时间支付
(1) 它怎么不起作用呢?日期格式很好。(2)为什么不使用参数化查询?不应该在查询字符串中嵌入参数值。用户应该使用javascript日期选择器日历来选择日期间隔。但是,日期选择器只有月份的日期,没有时间。只处理日期和时间,而不处理日期。是否确定日期选择器返回日期格式
YYYY-MM-DD
?只需确保从JS端以正确的格式提供$t1
和$t2
,并且正如Gordon所说,您应该使用准备好的语句来代替,在“$t1 00:00:00”和“$t200:00:00”之间支付的时间应该可以正常工作。您尝试过吗?