Php 仅按日期查询datetime列

Php 仅按日期查询datetime列,php,mysql,datetime,Php,Mysql,Datetime,这里有一个datetime格式的列。我想按给定的daterange搜索表。但是我编写的查询生成了一个错误 #1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 在第1行的“14:27:12)和日期(2016-06-28 14:27:12)附近限制0,30 删除日期并引用时间 SELECT * FROM `tele_incoming_call` WHERE (incoming_call_date BETWEEN '2016-06-27 14:27:12

这里有一个datetime格式的列。我想按给定的daterange搜索表。但是我编写的查询生成了一个错误

#1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 在第1行的“14:27:12)和日期(2016-06-28 14:27:12)附近限制0,30


删除日期并引用时间

SELECT * FROM `tele_incoming_call` WHERE (incoming_call_date BETWEEN '2016-06-27 14:27:12' AND '2016-06-28 14:27:12')

删除日期并引用时间

SELECT * FROM `tele_incoming_call` WHERE (incoming_call_date BETWEEN '2016-06-27 14:27:12' AND '2016-06-28 14:27:12')
但更好的是

SELECT * FROM `tele_incoming_call` WHERE `incoming_call_date` BETWEEN '2016-06-27 00:00:00' AND '2016-06-28 23:59:59'
但更好的是

SELECT * FROM `tele_incoming_call` WHERE `incoming_call_date` BETWEEN '2016-06-27 00:00:00' AND '2016-06-28 23:59:59'
date(2016-06-27 14:27:12)
在MySQL查询中出错。

将查询更新为以下内容

$sql_query="SELECT *
FROM `tele_incoming_call`
WHERE DATE(`incoming_call_date`) 
BETWEEN ".date('Y-m-d',strtotime('2016-06-27 14:27:12'))." AND 
".date('Y-m-d',strtotime('2016-06-28 14:27:12'));
要获取get from字符串,我们可以使用它将给定字符串转换为Unix时间戳

,然后我们将该时间戳传递给get from字符串,以获得所需的
Y-m-d
格式的日期,以便在MySQL中进行比较


更新:

您可以使用MySQL函数仅比较日期。

因此,您的查询将如下所示

$sql_query="SELECT *
FROM `tele_incoming_call`
WHERE DATE(`incoming_call_date`) 
BETWEEN DATE(STR_TO_DATE('2016-06-28 14:27:12','%Y-%m-%d %H:%i:%s'),'%Y-%m-%d') AND 
DATE(STR_TO_DATE('2016-06-28 14:28:12','%Y-%m-%d %H:%i:%s'),'%Y-%m-%d')";
date(2016-06-27 14:27:12)
在MySQL查询中出错。

将查询更新为以下内容

$sql_query="SELECT *
FROM `tele_incoming_call`
WHERE DATE(`incoming_call_date`) 
BETWEEN ".date('Y-m-d',strtotime('2016-06-27 14:27:12'))." AND 
".date('Y-m-d',strtotime('2016-06-28 14:27:12'));
要获取get from字符串,我们可以使用它将给定字符串转换为Unix时间戳

,然后我们将该时间戳传递给get from字符串,以获得所需的
Y-m-d
格式的日期,以便在MySQL中进行比较


更新:

您可以使用MySQL函数仅比较日期。

因此,您的查询将如下所示

$sql_query="SELECT *
FROM `tele_incoming_call`
WHERE DATE(`incoming_call_date`) 
BETWEEN DATE(STR_TO_DATE('2016-06-28 14:27:12','%Y-%m-%d %H:%i:%s'),'%Y-%m-%d') AND 
DATE(STR_TO_DATE('2016-06-28 14:28:12','%Y-%m-%d %H:%i:%s'),'%Y-%m-%d')";

我发现以下sql适合我

SELECT * FROM `tele_incoming_call` WHERE `incoming_call_date` BETWEEN '2016-06-27' AND 
'2016-06-28'

我发现以下sql适合我

SELECT * FROM `tele_incoming_call` WHERE `incoming_call_date` BETWEEN '2016-06-27' AND 
'2016-06-28'

... 转义日期尝试将日期值括在单引号内。。。转义日期尝试将日期值括在一个引号内。我想按日期搜索,只按日期搜索日期时间列。这就是问题所在……您声明
incoming_call_date
是日期时间列。这就是你需要的,或者我不理解你的问题。我想按日期搜索,只按日期搜索datetime列。这就是问题所在……你说,
incoming\u call\u date
是一个datetime列。那么这就是你需要的,或者我不理解你的问题。不,你不能自由地混合SQL和PHP。它们是完全不同的语言。是的,忘了连接字符串。更新了答案。不,您不能随意混合SQL和PHP。它们是完全不同的语言。是的,忘了连接字符串。更新了答案。