如何获得2个月之间的月份

时间:2013-06-28 08:37:44

标签: mysql date calendar

嘿伙计们,我想得到一个月份列表,其中包含2个月之间的月份。如果我从1月到6月给月份。然后我应该可以在它们之间获得所有的月份。我想在转发器标题中使用这些月份。你能告诉我查询吗

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

通过上面的代码,我将获得现在的月号,我希望得到这两个月之间的月份。

4 个答案:

答案 0 :(得分: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'))

答案 1 :(得分:0)

您可以尝试使用表格中的select(你想要的),其中(var_first_month)在(second_month)之间。希望有所帮助。

答案 2 :(得分: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'))

答案 3 :(得分: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或其他脚本......)