然后我们将时间戳传递给date()以获得所需的
这里我有一个列,在日期时间格式。我想根据给定的数据范围搜索表。但是我写的查询正在生成一个错误
#1064 -你有一个错误的SQL语法;检查与MySQL服务器版本对应的手册,以获得正确的语法near '14:27:12) AND date(2016-06-28 14:27:12) LIMIT 0,30 ' at line 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)
删除date
并引用时间
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 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'
我发现下面的SQL为我工作
SELECT * FROM `tele_incoming_call` WHERE `incoming_call_date` BETWEEN '2016-06-27' AND
'2016-06-28'
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'));
要从String中获取get,可以使用strtotime()将给定的字符串转换为Unix时间戳。然后我们将时间戳传递给date()以获得所需的
Y-m-d
格式的日期,以便在MySQL中进行比较。
更新:
你可以使用DATE_FORMAT 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')";