0

嘿伙计们,我想得到一个包含两个给定月份之间月份的月份列表。例如,如果我从一月到六月给出一个月。然后我应该能够得到他们之间的所有月份。我想在转发器标题中使用这些月份。你能告诉我查询吗

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

通过上面的代码,我将得到月份数字,现在我想得到这两个之间的月份。

4

4 回答 4

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'))
于 2013-06-28T08:42:22.177 回答
0

您可以尝试从 (var_first_month) between (second_month) 的表中使用 select (what you want)。希望有帮助。

于 2013-06-28T08:42:38.497 回答
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'))
于 2013-06-28T08:44:16.587 回答
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'));

在此处查看小提琴。但根据情况,通过代码获取月份名称可能更容易(例如使用 PHP 或其他脚本......)

于 2013-06-28T09:08:37.380 回答