簡體   English   中英

使用日期和日期(任意一年)的MySQL日期范圍搜索

[英]MySql date range search with month and day (any year)

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

是否可以僅使用MySql?

對的,這是可能的。

您要查找的功能是+/- INTERVAL expr unit 查看MySQL日期和時間函數

因此,要恢復使用7天- INTERVAL 7 DAY天:

SELECT *
FROM tablename
WHERE DATE(timefield) BETWEEN '2017-12-14' - INTERVAL 7 DAY AND '2017-12-14'

根據您的示例,足以使用-INTERVAL 1 WEEK

SELECT *
FROM tablename
WHERE DATE(timefield) BETWEEN '2017-12-14' - INTERVAL 1 WEEK AND '2017-12-14'

列出所有可能的單位

年月月季季秒秒

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

  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()
  )
;

注意:Le年不計算在內!
根據我根據the年所做的簡短調查,可以更輕松地將SQL查詢擴展為1天的公差,即使用- INTERVAL 8 DAY而不是7 ,然后在處理數據期間控制數據庫外部一天的有效性在一個循環中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM