MySQL - 按日期查询可变日期格式和自定义字段

时间:2016-12-04 00:30:39

标签: php mysql date date-formatting

考虑以下场景 - 我有一个PHP服务器接收传入的Ajax请求,以通过与搜索查询匹配的一个或多个字段来检索记录。

系统部署在不同的服务器上,可以有不同的日期格式,如下所示:

客户1(欧洲) - 日期格式22-02-2016(dd-mm-yyyy)

客户2(美国) - 日期格式02-22-2016(mm-dd-yyyy)

*每个客户都可以设置自己的自定义日期&管理员面板中的时间格式。

所以查询可以是:

{"first_name": "john","order_date":"22-02-2016"}

{"first_name": "john","order_date":"02-22-2016"}

甚至

{"first_name": "john","order_date":"2016-02-22"}

这里是情节变粗的地方 - 系统也支持自定义字段,因此查询甚至可以是:

{"first_name": "john","custom_field":"22-02-2016"}

其中custom_field作为DATE字段存储在数据库中,但PHP服务器不知道它是哪种字段类型(从技术上讲,我可以检索此信息,但现在试图避免使用它)。

我希望能够运行数据库查询,而无需明确知道custom_field是否为日期字段,并且仍然支持不同的格式。

理想情况下,我可以根据客户端格式更改数据库用于比较日期的格式,即我可以告诉MySQL如果查询包含日期字段,请使用给定格式。或者在表/数据库模式中全局更改它。

我的替代方法是遍历请求并将每个日期字段从客户端格式转换为MySQL格式或使用正则表达式转换查询日期。但是,如果可能的话,我宁愿在数据库级别解决它。

1 个答案:

答案 0 :(得分:0)

您可以将用户提交的日期存储在标准时区中,然后计算回您想要在PHP代码中显示的时区。