考虑以下场景 - 我有一个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格式或使用正则表达式转换查询日期。但是,如果可能的话,我宁愿在数据库级别解决它。
答案 0 :(得分:0)
您可以将用户提交的日期存储在标准时区中,然后计算回您想要在PHP代码中显示的时区。