2013-06-28 172 views
0

嘿傢伙我想得到一個月份列表,其中包含兩個月之間的月份。例如,如果我從1月份到6月份給予月份。然後,我應該能夠獲得他們之間的所有月份。我想在轉發器頭部使用這些月份。你能告訴我查詢如何獲得2個給定月份之間的月份

select month(str_to_date('January','%M')); -- 1 
select month(str_to_date('June','%M')); -- 6 

通過上面的代碼中,我將得到一個月的數字,現在我想這些2.

+0

爲什麼要使用SQL進行此操作?只需用代碼代替,並從2到5循環。 –

回答

0

舉幾行之間的幾個月裏,每間那些每月數個月,然後你可以做這樣的事情: -

SELECT MONTH(STR_TO_DATE('January','%M')) + Sub1.aMonth 
FROM (SELECT 0 AS aMonth UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) Sub1 
WHERE MONTH(STR_TO_DATE('January','%M')) + Sub1.aMonth <= MONTH(STR_TO_DATE('June','%M')) 

這是假設的月份是在同一年

爲了讓你的月名稱可能比較容易添加月數爲月的起始日期數量(在這種情況下,2013年1月1日),然後使用MONTHNAME: -

SELECT MONTHNAME(DATE_ADD('2013-01-01', INTERVAL Sub1.aMonth MONTH)) 
FROM (SELECT 0 AS aMonth UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) Sub1 
WHERE MONTH(STR_TO_DATE('January','%M')) + Sub1.aMonth <= MONTH(STR_TO_DATE('June','%M')) 
+0

嘿,你的代碼工作,但我可以得到月份名稱作爲輸出,而不是月份數字? – user2527367

+0

增加了對此的建議。 – Kickstart

+0

謝謝你。乾杯!! :) – user2527367

0

你可以嘗試使用select(你想要的)從之間的表在哪裏(var_first_month)(第二個月)。希望有所幫助。

0

試試這個

SELECT month(str_to_date(`your_date_column`,'%M')) as my_month 
    FROM `your_table` 
    WHERE month(str_to_date(`your_date_column`,'%M')) BETWEEN month(str_to_date('January','%M')) 
          AND month(str_to_date('June','%M')) 
+0

嘿,我在我的表中有月名而不是數字。我想要月份名稱作爲輸出。你查詢看起來很好,但你可以改變它,以便從表中得到月份名稱。 – user2527367

+0

看我更新的答案 –

0

如果月是在同一年,我認爲你需要這樣的查詢:

SELECT 
    DATE_FORMAT(STR_TO_DATE(months.m, '%m'), '%M') 
FROM 
    (SELECT 1 m UNION ALL SELECT 2 UNION ALL SELECT 3 
    UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 
    UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 
    UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12) months 
WHERE 
    months.m > month(str_to_date('January','%M')) 
    AND months.m < month(str_to_date('June','%M')); 

請參閱小提琴here。但根據情況,通過代碼獲取月份名稱可能會更容易(例如,使用PHP或其他腳本...)

相關問題