PHP和MySQL之间的周差异
我有以下查询.
说它产生以下结果
我现在想在2012年第35周获得所有39条记录.但是,我不希望在我的WHERE子句中使用WEEK(date)= 35 AND YEAR(date)= 2012,因为它不使用索引.相反,我希望找到边界并使用条件.我也不想使用BETWEEN,因为可能会出现舍入错误. 因此,我尝试以下思路一切都很好,但不要得到39条记录.显然,MySQL和PHP的处理方式与周数不同.我看到MySQL WEEK()使用模式0,2,4和6,它们都返回以星期日开始的一周.理想情况下,我会拥有人们最常用的那个,最重要的是它与DateTime提供的相同.我该怎么办?谢谢
最佳答案
关于MySQL如何工作,你正处在正确的轨道上,有各种模式可以产生不同结果的周相关函数. http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_week
我理解MySQL模式相当于PHP的日期逻辑是模式3,这是ISO周日期标准http://en.wikipedia.org/wiki/ISO_week_date 从星期一开始,周数和周数为1-53. 所以你需要使用WEEK(date_field,3)来获得PHP兼容的值. 作为一种替代方法,在我需要能够灵活查询不同日期范围或聚合(Q1-Q4,H1-H2等)的情况下,或者您可能需要使用不同周数的情况下,我发现了一件事. PHP支持在MySQL中使用日期帮助程序表(类似于数据仓库中可用作日期维度表的表,如果您熟悉它).它可以为您提供一个方便的表格来加入,以便查找日期范围.这样的事情应该有效: http://databobjr.blogspot.com/2012/06/create-date-dimension-table-in-mysql.html (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- javascript – 记录鼠标移动并将数据存储在数据库
- 为什么SQLAlchemy create_engine与charset = utf
- 无法在Windows 10上的MySQL 8.x中设置lower_case
- 在MySQL中使用外键还是不使用?
- Loading half a billion rows into MySQL---转载
- 在Sql Server和Mysql Server之间同步
- mysql – 选择*和查询优化器
- MySQL Workbench错误代码29 :(错误代码13-权限被
- 在MySQL上加入insert / update是一个原子操作吗?
- php – 可以在类之间维护PDO连接吗?