仅按日期查询datetime列



这里我有一个列,在日期时间格式。我想根据给定的数据范围搜索表。但是我写的查询正在生成一个错误

#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')";

相关内容

  • 没有找到相关文章

最新更新