当前位置: 首页 > 面试题库 >

MySQL获取月份,年份中的日期列表

严令秋
2023-03-14
问题内容

我正在做一些报告,我想获取特定月份(例如2014年1月)中的所有日期,以及执行此“ SQL”时的日期:

SELECT datesInMonth WHERE month = 1 AND year = 2014;

我想得到这个清单:

    2014-01-01
    2014-01-02
    2014-01-03
    ...
    2014-01-31

如果我这样做“ SQL”:

SELECT datesInMonth WHERE month = 2 AND year = 2014;

我想得到这个清单:

    2014-02-01
    2014-02-02
    2014-02-03
    ...
    2014-02-28

如果我这样做“ SQL”:

SELECT datesInMonth WHERE month = 2 AND year = 2016;

我想得到这个清单:

    2016-02-01
    2016-02-02
    2016-02-03
    ...
    2016-02-29

这有可能吗,还是我应该自己为下一个100年绘制日期表:)


问题答案:

这是此问题的mysql / java解决方案。

创建表语句:

CREATE TABLE `date_table` (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT,
  `date` date NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

Java代码:

public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Database db = new Database("root", "root01", "test-db", "10.10.5.11");
        db.connect();
        int start_year = 2013;
        int end_year = 2100;
        for (int year = start_year; year < end_year; year++) {
            for (int month = 1; month <= 12; month++) {
                int days_in_month = 0;
                switch (month) {
                    case 1: { //January
                        days_in_month = 31;
                        break;
                    }
                    case 2: { //February
                        if (year % 4 == 0) {
                            days_in_month = 29;
                        } else {
                            days_in_month = 28;
                        }
                        break;
                    }
                    case 3: { //March
                        days_in_month = 31;
                        break;
                    }
                    case 4: { //April
                        days_in_month = 30;
                        break;
                    }
                    case 5: { //May
                        days_in_month = 31;
                        break;
                    }
                    case 6: { //June
                        days_in_month = 30;
                        break;
                    }
                    case 7: { //July
                        days_in_month = 31;
                        break;
                    }
                    case 8: { //August
                        days_in_month = 31;
                        break;
                    }
                    case 9: { //September
                        days_in_month = 30;
                        break;
                    }
                    case 10: { //October
                        days_in_month = 31;
                        break;
                    }
                    case 11: { //November
                        days_in_month = 30;
                        break;
                    }
                    case 12: { //December
                        days_in_month = 31;
                        break;
                    }
                }
                for (int day = 1; day <= days_in_month; day++) {
                    db.executeInsert("INSERT INTO date_table (date) VALUES ('" + year + "-" + month + "-" + day + "');");
                }
            }
            System.out.println("YEAR: " + year + " FINISHED");
        }
    }

我使用此sql获取日期列表:

SELECT * FROM date_table WHERE YEAR(date) = 2014 AND MONTH(date) = 2;

希望有人使用它:)



 类似资料:
  • 问题内容: 我需要像’Jan 2008’这样的SQL Server中日期时间的月份+年。我按月,年对查询进行分组。我已经搜索并找到了datepart,convert等功能,但是似乎没有一个有用的功能。我在这里想念什么吗?有这个功能吗? 问题答案: 如果您想让它们以字符串形式返回,则应采用这种格式; 这是其他格式选项

  • 有没有办法创建一个包含所有三个下拉列表(日期月份和年份)的日期选择器,我可以通过JS/前端验证将输入的最低年龄限制为18岁?

  • 问题内容: 我希望能够使用以下语句从mysql中获取结果: 但是我想获取限制在某个月和一年中的结果(基于用户的输入)…我试图这样做: … 一个月,但它给了错误。 在该表中,它实际上有两个日期: 和,但我注重。输入值为月份和年份。我该如何措辞根据当年那个月获得结果的SQL语句? 问题答案: 您很接近-向后进行比较(假设是DATETIME或TIMESTAMP数据类型): 注意事项: 请注意,您正在使用

  • 问题内容: 我必须获取mysql中两个日期之间的月份列表。 问题答案: SQLFiddle演示

  • 在calendarview中,起初我可以设置日期,但当我单击将日历更改为上个月或下个月的两个按钮时,我无法获得哪个月和哪一年。更重要的是,Calendarview支持滑动到前一个月或下个月,但我无法获得现在显示日历的年月信息。我怎么能看到(现在显示)日历的年月信息?? 在此处输入图像描述 在此处输入图像描述