2016-04-25 56 views
0

我试图获取当天日期的行数。它的工作是这样的,但只有当时间为00:00:00,所以如果我改变时间为例如2016-04-25 05:30:30其不计算该行出于某种原因。日期(现在)只能使用时间00:00:00

$result16 = $dbhandle->query("SELECT * FROM email WHERE signoff = DATE(NOW())"); 
$row_cnt16 = $result16->num_rows; 

我该怎么办才能解决这个问题?

Table information: 
signoff = varchar(250) 

输出:

如果日期是2016-04-25 00:00:00输出2

如果日期是2016-04-25 05:04:00输出1

+0

你可以试试这个问题

然后用这个查询

SELECT * FROM email WHERE date(signoff) = DATE(CURDATE()) 

:' SELECT * FROM email WHERE STR_TO_DATE(signoff,'%Y-%m-%d')= DATE(NOW())' – 1000111

+1

为什么使用'varchar'而不是'date'或'datetime'格式for coll在桌上吗? – Naumov

回答

2

试试这个:

SELECT * 
FROM email 
WHERE signoff BETWEEN DATE(NOW()) AND DATE(NOW() + INTERVAL 1 DAY) 
+0

感谢您的答案它的工作,我想我使用这一个,因为我也需要使这个间隔7天 – marijn

1

首先将您的数据类型signoff更改为datetime。如果速度是您可以使用

SELECT * FROM email 
WHERE signoff >= curdate() 
    AND signoff < curdate() + interval 1 day 
1

加入日期到签收试试这个

$result16 = $dbhandle->query("SELECT * FROM email WHERE DATE(signoff) = DATE(NOW())"); 
+0

这是工作为我感谢! – marijn

+0

欢迎您,请标记为已接受 –

+0

我会但我还不能5分钟;) – marijn