首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这些场景中哪一种检索格式化日期更快?

问这些场景中哪一种检索格式化日期更快?
EN

Stack Overflow用户
提问于 2011-08-16 11:33:05
回答 4查看 223关注 0票数 0

我有一个日期时间字符串,我只需要脚本中的日期在我的数据库中执行一些搜索。目前,我脑子里有两种情况,但不知道哪一种更快。

第一个场景:

在MYSQL数据库中,我有两列:datetime (它是日期时间类型)和date (是日期类型)。

然后,在我的PHP脚本中,每次保存记录时,我都会将已知的字符串插入datetime字段,然后将其转换为适合date字段(我想的是:$date = date("Y-m-d", strtotime($datetime)))。

这样,所有必要的片段都存储在我的数据库中,我可以动态地检索它们( datetime和date字段)。

第二个场景:

MYSQL数据库应该只包含datetime列。

我的PHP脚本将将已知的字符串插入到datetime字段,而不进行任何其他修改。

当我检索我的数据时,我会做这样的事情:SELECT datetime, DATE(datetime) FROM ...

结论

这些场景中哪一种更快,因此应该使用?应该在保存或检索时创建日期格式吗?MYSQL在格式化日期上比PHP快吗?最好是将所有内容存储在数据库中并按原样检索,还是只存储检索上的最小值和格式?这些场景中的哪一种是最佳实践?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-16 11:40:10

这取决于你的用法:

如果您只需要阅读date,那么使用单个datetime列,从datetime到date的转换就足够便宜了。

如果要在给定日期(如WHERE date = '2011-08-01')选择行,则选择一个date列,因为这将允许mysql使用date列上的索引(如果添加了索引的话)。

如果要在日期范围内选择行,则选择datetime列。你可以做一些像WHERE datetime >= '2011-08-01' AND datetime < '2011-08-16'这样的事情。

票数 2
EN

Stack Overflow用户

发布于 2011-08-16 11:37:13

第二种是最佳和快速的,因为您是根据需求获得值的。而不是得到一些价值,然后再努力去做。

票数 1
EN

Stack Overflow用户

发布于 2011-08-16 11:44:01

国际水文学

对于范围filtering

  • datetime允许日期时间函数来说,
  • 日期时间,甚至是无符号整数(unix时间戳)更好,它可能对聚合函数
  • 有用,可以避免来自mysql (也就是原始的)
  • 的格式化数据--任何与表示有关的内容都是PHP职责

。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7077543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档