2015-02-23 199 views
0

我在数据库中有两列,一个eDate和另一个eTime。我试图在一个mySQL查询中获得它,我可以加入它们以创建一个完整的DATETIME,这个DATETIME合并后会在NOW()之后生成记录。mySQL DATE CONCAT日期和时间不起作用

下面是数据图像: enter image description here

这是我使用的代码:

$sql = "SELECT *, 
     (SELECT count(*) FROM aw_event_attendees AS attendees WHERE events.eid = attendees.eid) AS allattending, 
     (SELECT count(*) FROM aw_event_attendees AS attendees WHERE events.eid = attendees.eid AND attendees.uid = " . $_POST['uid']. ") AS attending 
FROM aw_events as events WHERE DATE(CONCAT(eDate, ' ', eTime)) >= NOW() ORDER BY events.eid DESC"; 

这是我得到的结果是:

enter image description here

它今天不在,23-2-2015 @ 21:30。我似乎无法让它意识到时间。有什么建议吗?

感谢

回答

0

我强烈建议存储对象作为DATETIME对象和拆分出来在需要的地方,而不是分裂他们,并试图加入。

事件有一个特定的DATETIME,它开始,所以这是正确的数据类型。

+0

不幸的是,这是不可能的,因为数据已经存在。但是他们必须是我可以将两者结合起来的一种方式? – 2015-02-23 20:38:51

0

您可以通过代码更改为此做:

SELECT *, 
     (SELECT count(*) FROM aw_event_attendees AS attendees WHERE events.eid = attendees.eid) AS allattending, 
     (SELECT count(*) FROM aw_event_attendees AS attendees WHERE events.eid = attendees.eid AND attendees.uid = 35) AS attending 
FROM aw_events as events WHERE STR_TO_DATE(CONCAT(eDate, ' ', eTime), '%Y-%m-%d %H:%i:%s') > NOW() ORDER BY events.eid DESC 

代码的变化如下:

STR_TO_DATE(CONCAT(eDate, ' ', eTime), '%Y-%m-%d %H:%i:%s') 

结果给出的日期和时间,只有NOW()后包括如果日期相同:

enter image description here

完成了工作!希望它有助于他人:)