php和mysql的日期数据类型问题

php和mysql的日期数据类型问题,php,mysql,Php,Mysql,我们正在创建在前端使用过滤器进行搜索的功能。当用户单击过滤器时,搜索框将打开,并具有两个下拉选项,如“开始于”、“等于”和“结束于” 我的问题是,日期以YYYY-mm-dd的形式保存在数据库中,作为日期数据类型(mysql),在前端,我们有搜索选项,如start with、ends with和equal to,当我们搜索“start with=2013”时,它工作得非常好 但是我们还有一个选项,用户可以在设置页面中将格式更改为“dd-mm-yyyy”,当我们搜索“starts with=20”时

我们正在创建在前端使用过滤器进行搜索的功能。当用户单击过滤器时,搜索框将打开,并具有两个下拉选项,如“开始于”、“等于”和“结束于”

我的问题是,日期以YYYY-mm-dd的形式保存在数据库中,作为日期数据类型(mysql),在前端,我们有搜索选项,如start with、ends with和equal to,当我们搜索“start with=2013”时,它工作得非常好


但是我们还有一个选项,用户可以在设置页面中将格式更改为“dd-mm-yyyy”,当我们搜索“starts with=20”时,它应该给出从20开始的日期,而不是从20开始的年份。

我看到的一个简单解决方案是,您可以创建第二列,其中日期正好是另一种格式。您可以使用代码自动执行,而无需再次输入每个日期

否则,您可以将其设置的格式反转回YY-mm-dd,但如果您只关心天而忽略月和年,则可以使用正则表达式匹配实际YY-mm-dd中的最后一个“dd”(如在mysql中使用百分比“%”和类似运算符)。 例如,将“=”替换为LIKE,并且在“20”之前有一个百分比用于排除和之前的字符:

SELECT *
FROM employees 
WHERE (date_yyy_mm_dd LIKE '%20' OR date_yyy_mm_dd LIKE '%21' OR date_yyy_mm_dd LIKE '%22' OR [...] OR date_yyy_mm_dd LIKE '%31')
更多有关:

我看到的另一个解决方案是,您可以获取所有结果,而不必担心日期,然后操纵日期并反转它们,然后将所有结果放入一个巨大的数组中。然后只搜索该数组中所需的日期范围,就可以循环该数组中其余的内容来打印结果


希望对您有所帮助。

谢谢分享。您是否有问题,或者只是在报告您的开发工作的当前状态?您可能会考虑使用一些MySQL构建日期和时间函数,如<代码> DATEYFALATATE()/<代码>、代码>日()/代码>等等。您能做些什么?将DB字段更改为更通用的字段,使用DB函数,在前端转换输入数据,在后端转换搜索数据。