解析时间戳 - 在MySQL或PHP中执行吗?

时间:2010-04-11 00:01:43

标签: php mysql datetime

假设您有一个包含timestamp列的表,并且您希望将该列解析为两个数组 - $date$time

你个人:

a)像DATE(timestamp), TIME(timestamp)这样的查询,或者甚至可能会HOUR(timestamp), MINUTE(timestamp

b)抓取timestamp列并根据需要使用PHP中的循环解析出来

我觉得(a)更容易......但我知道我什么都不知道。并且让我的查询在同一列中输出2或3次输出时感觉有点调皮......

这是最好的做法吗?

6 个答案:

答案 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查询本身中需要它(例如在WHEREGROUP BYORDER BY等),则首选方式a)。如果您更需要代码逻辑(PHP或其他),那么首选b)。

如果您的PHP代码实际上执行的任务与SQL一样好,那么我也会这样做。换句话说,只有当您要仅为纯显示目的格式化日期时,方式b)才是首选。

答案 5 :(得分:0)

我认为归结为此,你觉得在家里编写php代码或mysql查询更多吗?

我认为这更像是编码风格而非技术可行性的问题,你可以选择自己的风格。