MySQL获取月份,年份中的日期列表 [英] MySQL Get a list of dates in month, year

查看:970
本文介绍了MySQL获取月份,年份中的日期列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am doing some reports and I want to get all dates in specific month, for example January 2014, and when I do this 'SQL':

SELECT datesInMonth WHERE month = 1 AND year = 2014;

我想获得此列表:

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

如果我执行此"SQL"操作:

If i do this 'SQL':

SELECT datesInMonth WHERE month = 2 AND year = 2014;

我想获得此列表:

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

如果我执行此"SQL"操作:

If I do this 'SQL':

SELECT datesInMonth WHERE month = 2 AND year = 2016;

我想获得此列表:

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

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

Is this possible, or should I do my own table with dates for the next 100 years :)

推荐答案

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

Here is the mysql/java solution for this question.

创建表语句:

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获取日期列表:

I get the list of dates using this sql:

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

希望有人使用它:)

这篇关于MySQL获取月份,年份中的日期列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆