我有一个周列,周编号为 w0、w1、w2...
。我正在尝试获取最近六周的数据。这是我正在使用的 sql 查询。
SELECT * FROM week
WHERE uid = '9df984da-4318-1035-9589-493e89385fad'
AND report_week BETWEEN `'w52' AND 'w5'`;
'w52'
本质上是 2015 年 12 月的第 52 周,'w5'
是 2016 年 1 月。' Between'
似乎不起作用。获取上述两周数据的最佳方式是什么?
这是 CREATE TABLE 语句:
CREATE TABLE `week` (`uid` VARCHAR(255) DEFAULT '' NOT NULL,
`report_week` VARCHAR(7) NOT NULL,
`report_files_active` BIGINT DEFAULT NULL);
本质上,该表是从具有日期列的其他表中填充的。它使用其他表中的日期并将每周数据汇总到此表中。
感谢任何帮助。
最佳答案
引用这个SO Discussion其中详细说明了与您的问题类似的问题的原因。
BETWEEN 'a' and 'b'
实际上匹配 columnValue >='a' and columnValue <= 'b'
在您的情况下,由于字符串的字典顺序,w52 大于 w5 - 这意味着 BETWEEN
子句永远不会返回 true (将其视为相当于说 BETWEEN 10 and 1
而不是 BETWEEN 1 and 10
。
编辑我的回复:
不要将周值存储为字符串。相反,这里有几种方法(按其偏好顺序排列):
- 有一个时间戳列。然后你就可以轻松地使用MySQL查询 从中提取星期信息的设施。为一个 引用见this发布。
- 维护两列 -
YEAR, WEEKNO
哪里YEAR
将存储值 例如2015、2016等以及WEEKNO
将存储周数。 这样您就可以查询任意年份任意一周的数据。
关于mysql - SQL查询获取两周之间的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35194019/