簡體   English   中英

Mysql 獲取日期之間的行 在年份和月份列之間拆分

[英]Mysql get rows between date split between year and month columns

我有一張表,在不同的列中有年份和月份,我需要找到 3 個月前和現在之間的所有行。

SELECT * FROM `table` 
 WHERE DATE(CONCAT(`year`, '-', `month`, '-01')) >= 
          DATE_FORMAT(NOW() - INTERVAL 3 MONTH, '%Y-%m-01')

它看起來相當冗長,並且可能效率低下,因為這是一個非常大的表。 有一個更好的方法嗎?

當日期存儲為單獨的字段時,沒有太多優化,但我會將您的查詢重寫為:

SELECT * 
  FROM `table` 
 WHERE STR_TO_DATE(`year`+ '-'+ `month` + '-01', '%Y-%m-%d') >= DATE_SUB(NOW(), INTERVAL 3 MONTH)

連接使得對yearmonth列的索引變得無用。

For more info about MySQL date functions, see: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

好吧,我遇到了同樣的問題,我已經想出了我認為是這種情況的解決方案。

SELECT * 
FROM table
WHERE (month >= (month(curdate()) - 3 AND year >= year(curdate())) 
      AND (month >= month(curdate()) AND year >= year(curdate())))

假設您有名為年和月的列。

暫無
暫無

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

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