假设您有一个包含timestamp
列的表,并且您希望将该列解析为两个数组 - $date
和$time
。
你个人:
a)像DATE(timestamp), TIME(timestamp)
这样的查询,或者甚至可能会HOUR(timestamp), MINUTE(timestamp
b)抓取timestamp
列并根据需要使用PHP中的循环解析出来
我觉得(a)
更容易......但我知道我什么都不知道。并且让我的查询在同一列中输出2或3次输出时感觉有点调皮......
这是最好的做法吗?
答案 0 :(得分:3)
(a)可能没问题,如果你的代码库更容易。我非常喜欢不必编写不需要的额外代码,我只想在必要时进行优化。对我来说拉整个日期然后解析似乎是过早的优化。
永远记住,sql server在其中有很多智能,可以优化查询,所以你不必这样做。
所以去a),如果你发现它是狗慢或导致问题,那么转到b)。我怀疑a)会做你想做的一切,你再也不会想到它了。
答案 1 :(得分:2)
我个人会这样做(b)。无论如何,您将要循环行,PHP的strtotime()
和date()
函数非常灵活,可以处理您遇到的大多数日期/时间格式问题。
我倾向于尽量保持我的数据库结果集尽可能小,这样我就不必在数据库提取后处理大量的数组索引。我宁愿从结果行中取出一个时间戳并将其转换为PHP中的几个值,而不是处理结果行中相同数据的多个表示,或者编辑我的SQL查询以获得特定的格式。
答案 2 :(得分:2)
b)是我关注的内容,每次都使用它。它还使您能够灵活地控制希望它出现在前端的方式。想一想:如果您关注a)并且想要进行更改,则需要手动更改所有查询。但是如果你正在使用b)你可以在这个值上调用一个函数(来自数据库),你就可以了。如果您需要更改任何内容,只需在此功能和中提琴中进行更改即可!这听起来不像是节省时间???
希望有所帮助。
答案 3 :(得分:1)
我也会用b)。我认为,如果我在某些时候需要使用日期或其他语言的月份,这一点很重要。我可以使用PHP语言环境支持将其转换为给定的语言,但不是a)中的情况。
答案 4 :(得分:1)
如果您在SQL查询本身中需要它(例如在WHERE
,GROUP BY
,ORDER BY
等),则首选方式a)。如果您更需要代码逻辑(PHP或其他),那么首选b)。
如果您的PHP代码实际上执行的任务与SQL一样好,那么我也会这样做。换句话说,只有当您要仅为纯显示目的格式化日期时,方式b)才是首选。
答案 5 :(得分:0)
我认为归结为此,你觉得在家里编写php代码或mysql查询更多吗?
我认为这更像是编码风格而非技术可行性的问题,你可以选择自己的风格。