MySql 日期范围搜索,包含月份和日期(任何年份)

标签 mysql

例如,如果我有搜索字符串“2017-12-14”,那么我需要查找与 7 天范围匹配的所有行:“%-12-11”、“%-12-12”、“% -12-13”、“%-12-14”、“%-12-15”、“%-12-16”、“%-12-17”。

是否可以只用MySql来做?

最佳答案

要选择跨年的同一天,您可以使用以下技巧。

  1. 获取过去 7 天/1 周的列表NOW() - INTERVAL 1 WEEK
  2. 获取那几天的DAYOFYEAR
  3. 在数据库中搜索一年中同一天的所有值

SELECT * FROM timevalues
WHERE DAYOFYEAR(timefield) IN (
  SELECT DAYOFYEAR(timefield)
  FROM timevalues
  WHERE DATE(timefield) BETWEEN NOW() - INTERVAL 1 WEEK AND NOW()
  )
;

注意:闰年不计算在内!
根据我根据闰年的简要调查,将 SQL 查询扩展为 1 天的容差会更容易,即使用 - INTERVAL 8 DAY 而不是 7 和然后在循环处理数据的过程中控制数据库外的日期有效性。

关于MySql 日期范围搜索,包含月份和日期(任何年份),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47818935/

相关文章:

php - 使用 PHP 编辑多个 MySQL 行,其中所有行的主键都相同

mysql - cakePHP 中使用 desc 进行数据排序

php - MySQL - 需要帮助计算与其他表中的某些对应的 id

mysql - 由于在 MySQL 中使用保留字作为表名或列名而导致的语法错误

mysql - 如果向现有 MySQL 集合添加元素会发生什么?

php - 绑定(bind) PDO 的参数数量无效

mysql - 我想从子查询的结果中计算男性和女性的总数。有没有mysql查询

php - JSONException : Value <br cannot be converted into JSONobject

php - Mysql Order by Tweak

MySQL 3 行来自同一个表,它们彼此匹配