-2

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

我的问题是日期以日期数据类型(mysql)保存在数据库中的 YYYY-mm-dd 中,并且在前端我们有搜索选项,例如开头、结尾和等于,当我们搜索时它工作得很好“以 = 2013 开头”

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

4

1 回答 1

1

我看到的一个简单解决方案是您可以创建第二列,其中日期只是其他格式。您可以使用代码自动执行此操作,而不必再次输入每个日期。

否则,您可以将它们的设置格式反转回 YY-mm-dd,但如果您只关心几天而忽略月份和年份,您可以使用正则表达式匹配实际 YY-中的最后一个“dd”- mm-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')

更多信息:http ://www.mysqltutorial.org/mysql-like/

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

希望它可以帮助你。

于 2013-07-19T05:08:45.623 回答