这里我有一个日期时间格式的列。我想按给定的日期范围搜索表。但我写的查询是生成错误
#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法 靠近' 14:27:12)和日期(2016-06-28 14:27:12)限制0,30 '在第1行
SELECT * FROM `tele_incoming_call` WHERE DATE(`incoming_call_date`) BETWEEN date(2016-06-27 14:27:12) AND
date(2016-06-28 14:27:12)
答案 0 :(得分:0)
删除date
并引用时间。
SELECT * FROM `tele_incoming_call` WHERE (incoming_call_date BETWEEN '2016-06-27 14:27:12' AND '2016-06-28 14:27:12')
答案 1 :(得分:0)
SELECT * FROM `tele_incoming_call` WHERE MONTH(`incoming_call_date`) BETWEEN MONTH(2016-06-27 14:27:12) AND
MONTH(2016-06-28 14:27:12) AND YEAR(`incoming_call_date`) BETWEEN YEAR(2016-06-27 14:27:12) AND
YEAR(2016-06-28 14:27:12) AND DAY(`incoming_call_date`) BETWEEN DAY(2016-06-27 14:27:12) AND
DAY(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'
答案 2 :(得分:0)
我发现以下sql适合我
SELECT * FROM `tele_incoming_call` WHERE `incoming_call_date` BETWEEN '2016-06-27' AND
'2016-06-28'
答案 3 :(得分:-1)
date(2016-06-27 14:27:12)
错误。
将查询更新为以下内容。
$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'));
要从String获取get,我们可以使用strtotime()将给定的字符串转换为 Unix时间戳。
然后我们将该时间戳传递给{{ 3}}获取所需的Y-m-d
格式的日期,以便在MySQL中进行比较。
<强>更新强>
您可以使用date() 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')";