mysql - SQL查询获取两周之间的数据?

标签 mysql sql date

我有一个周列,周编号为 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

编辑我的回复:

不要将周值存储为字符串。相反,这里有几种方法(按其偏好顺序排列):

  1. 有一个时间戳列。然后你就可以轻松地使用MySQL查询 从中提取星期信息的设施。为一个 引用见this发布。
  2. 维护两列 - YEAR, WEEKNO哪里YEAR将存储值 例如2015、2016等以及WEEKNO将存储周数。 这样您就可以查询任意年份任意一周的数据。

关于mysql - SQL查询获取两周之间的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35194019/

相关文章:

sql - 如何更新其值不在另一个表中存储的范围内的记录

mysql - 导入excel文件并保存到mysql数据库中

mysql - 重叠预订的最小和最大计数

mysql - 零售数据库设计 - 具有不同配件的多种产品

mysql - 如何理解这个包含 JOIN 的 MySQL 查询?

java - 如何改革或迭代我的sql结果集来构建 map

mysql - 是否可以生成更多表的 MYSQL 查询,其中一个表列的值作为更多查询列?

sql - Postgres 日期重叠约束

SQLite 更新日期 SQL

python json日期对象到python日期时间