我有一个表,应该有非Gregorian日期时间(Jalali日历)的几列。我需要在order和where语句中使用它们来显示HTML中的完整表格内容。通过考虑MySQL和PHP执行时间,哪种方案可以提高性能?
1)在每次读/写时使用PHP将非公历日期转换为格里高利,并使用MySQL日期时间。
2)在每次读/写时使用PHP并使用MySQL int / bigint将非公历日期时间转换为UNIX时间戳。
3)使用MySQL varchar。
答案 0 :(得分:1)
这实际上取决于您希望在数据库中使用该值的程度,以及您希望在那里使用它的方式。
我的直觉建议在数据库端使用标准日期时间,并在需要时仅在客户端/ php端转换提供给查询和显示日期的搜索条件。这将允许您利用内置的MySQL日期和日期时间函数。
然而,因为我不熟悉那个日历,并且只是浏览了维基并且“难以计算日历”对我而言非常突出;所以我的直觉可能不正确。您可能最好在数据库中为Jalali Calendar创建一组存储函数,这些函数反映了MySQL提供的函数,或者使用完整的编程语言进行计算可能要容易得多。
您甚至可能希望将Jalali存储为标准日期/日期时间类型或unixtimestamp整数以外的其他内容;相反,可能发明或找到一些jalalitimestamp值的实现,可以利用MySQL中可用的索引选项。