嘿傢伙我想得到一個月份列表,其中包含兩個月之間的月份。例如,如果我從1月份到6月份給予月份。然後,我應該能夠獲得他們之間的所有月份。我想在轉發器頭部使用這些月份。你能告訴我查詢如何獲得2個給定月份之間的月份
select month(str_to_date('January','%M')); -- 1
select month(str_to_date('June','%M')); -- 6
通過上面的代碼中,我將得到一個月的數字,現在我想這些2.
嘿傢伙我想得到一個月份列表,其中包含兩個月之間的月份。例如,如果我從1月份到6月份給予月份。然後,我應該能夠獲得他們之間的所有月份。我想在轉發器頭部使用這些月份。你能告訴我查詢如何獲得2個給定月份之間的月份
select month(str_to_date('January','%M')); -- 1
select month(str_to_date('June','%M')); -- 6
通過上面的代碼中,我將得到一個月的數字,現在我想這些2.
舉幾行之間的幾個月裏,每間那些每月數個月,然後你可以做這樣的事情: -
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'))
嘿,你的代碼工作,但我可以得到月份名稱作爲輸出,而不是月份數字? – user2527367
增加了對此的建議。 – Kickstart
謝謝你。乾杯!! :) – user2527367
你可以嘗試使用select(你想要的)從之間的表在哪裏(var_first_month)(第二個月)。希望有所幫助。
試試這個
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'))
嘿,我在我的表中有月名而不是數字。我想要月份名稱作爲輸出。你查詢看起來很好,但你可以改變它,以便從表中得到月份名稱。 – user2527367
看我更新的答案 –
如果月是在同一年,我認爲你需要這樣的查詢:
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或其他腳本...)
爲什麼要使用SQL進行此操作?只需用代碼代替,並從2到5循環。 –