我有一个包含人员信息的表格,我在表格中有一个注册日期栏,我想在特定日期提取注册人员。
更具体一点我想在html输入中输入一些日期,然后根据这个日期从数据库中选择。
我尝试了两种解决方案但实际上却失败了:
输入完整日期:这将仅使用完整日期,例如,如果我输入2016-1-1我将获得此日期的结果,但如果我想要返回所有注册的人在2016-1或2016年,我的查询将失败,因为这些值不等于表格中的日期!
使用正则表达式,没关系,但它会再次失败!如果我输入2016-1,查询将返回2016-11的结果!
所以任何想法?!还是更好的正则表达式?!
问候。
答案 0 :(得分:0)
最好的解决方案是在查询中这样做,至少在我看来。
所以你想要2016年的所有用户?
SELECT * FROM `users` WHERE year(`date_field`) = '2016';
// Where 'date_field' is the name of your date field
或2016/01将是:
SELECT * FROM `users` WHERE year_month(`date_field`) = '2016-01';
// Where 'date_field' is the name of your date field#
或者您可以将此用于2016/01:
SELECT * FROM `users` WHERE year(`date_field`) = '2016' AND month(`date_field`) = '01';
// Where 'date_field' is the name of your date field
有关MySql日期函数的完整列表,请查看in_array
。
答案 1 :(得分:0)
我想补充一点,您也可以在某些日期之间查询结果。
我经常最终做的是:
// For a certain month or period
SELECT *
FROM users
WHERE date_field >= '2016-01-01'
AND date_field <= '2016-02-01';
// For a whole year
SELECT *
FROM users
WHERE date_field >= '2016-01-01';