[英]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'
年月月季季秒秒
要選擇跨年的同一天,您可以使用以下技巧。
NOW() - INTERVAL 1 WEEK
DAYOFYEAR
。
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.