希望你一切顺利,
我有一个包含人员信息的表,表中有一个注册日期列,我想获取特定日期的注册人员。
更具体地说,我想在html输入中输入一些日期,然后根据这个日期从数据库中进行选择。
我尝试了两种解决方案,但实际上都失败了:
-
通过输入完整日期:这将只适用于完整日期,例如,如果我输入2016-1-1,我将获得该日期的结果,但如果我想返回2016-1或2016年注册的所有人,我的查询将失败,因为这些值与表中的日期不相等!
-
使用正则表达式,可以,但它将再次失败!例如,如果我输入了2016-1,查询也会返回2016-11的结果!
有什么想法吗?!还有更好的正则表达式吗?!
问候。
至少在我看来,最好的解决方案是在查询中执行。
所以你想要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日期函数的完整列表,请查看文档。
我想补充一点,您还可以查询特定日期之间的结果。
我经常做的是:
// 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';