使用date数据类型的php和mysql问题

时间:2013-07-19 04:39:21

标签: php mysql

我们正在创建我们在前端使用过滤器进行搜索的功能。当用户点击过滤器时,搜索框将打开,并有一些下拉选项,如开头,等于和结束。

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

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

1 个答案:

答案 0 :(得分:1)

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

否则,您可以将其设置的格式反转回YY-mm-dd,但如果您只关心几天并忽略月份和年份,则可以使用正则表达式匹配最后一个" dd& #34;在你的实际YY-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/

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

希望它对你有所帮助。