如果我理解正确的,你只需要选择从当月的第一天开始的事件,那么你可以做这样的
SELECT ID, year, month, day, event_loc, event_address, event_link, event_time, event_name
FROM events
WHERE STR_TO_DATE(CONCAT_WS('-', year, month, day), '%Y-%c-%e') >= DATE_FORMAT((CURDATE()), '%Y-%m-01')
ORDER BY year, month, day
这里是SQLFiddle演示
现在
,才能够正常查询中使用索引和范围搜索我建议改变你的表的模式,利用datetime
(为event_date
列)和012数据(对于event_duration
)数据类型。建议架构可能是这样的
CREATE TABLE events
(`ID` int,
`event_date` datetime,
`event_loc` varchar(256),
`event_address` varchar(256),
`event_link` varchar(256),
`event_duration` time,
`event_name` varchar(256)
);
然后查询看起来像
SELECT ID, DATE(event_date) event_date,
event_loc,
event_address,
event_link,
CONCAT(DATE_FORMAT(event_date, '%l:%i%p - '),
DATE_FORMAT(ADDTIME(event_date, event_duration), '%l:%i%p')) event_timee,
event_name
FROM events
WHERE event_date >= DATE_FORMAT(CURDATE(), '%Y-%m-01')
ORDER BY event_date
这里是SQLFiddle演示
您可以发布您当前的数据库查询? –
好心地显示您正在工作的db查询或示例代码 –