-3

在我的网页上,我有 2 个文本框,我可以从中输入年份和月份。你能告诉我一个mysql查询,它会得到那个月的天数。我想在我的代码中使用它,并根据我需要做其他事情的天数。我搜索并发现了类似的东西

SELECT DAY(LAST_DAY('2012-02-1'));

这是我背后的代码

public void search(object sender, EventArgs e)
        {
            string cnnString = "Server=localhost;Port=3307;Database=leavesystem;Uid=root;Pwd=ashish";
            MySqlConnection cnx = new MySqlConnection(cnnString);
            cnx.Open();
            string cmdText = "Select DAY(LAST_DAY(CAST(CONCAT(@'" + year.value +"', '-', @'"+ month.value+"', '-', 1) AS DATE))) ";
            MySqlCommand cmd = new MySqlCommand(cmdText, cnx);

         }

这给了我天数,但我没有日期。我有 2 个文本框值年和月。你能给我这个查询吗?

4

2 回答 2

1

假设你有两个参数:

SET @y = 2013;
SET @m = 5;

@y将是年,@m将是月。

由于每个月都有第一天,因此您可以将日期设置1为常量

SELECT DAY(LAST_DAY(CAST(CONCAT(@y, '-', @m, '-', 1) AS DATE)));

顺便说一句,我使用的是会话变量,我想你会使用INPUT参数,我想它会是一样的。

编辑 1

如果查询中传递的月份是MONTHNAME,您可以在code-behind已经更改它。但是,如果您坚持,这里是获取的查询MONTHNUMBER

SET @m = MONTH(STR_TO_DATE('June', '%M'));

这是最终的查询:

SET @y = 2013;
SET @m = 'June';

SELECT DAY(LAST_DAY(CAST(CONCAT(@y, '-', MONTH(STR_TO_DATE(@m, '%M')), '-', 1) AS DATE)));
于 2013-06-26T07:07:31.997 回答
0

What if you give by defaults the 01 first of every month in the query, don't know your programming language but just to give an idea

var date_vaiable=year_variable+"-"month_variable+"-01"; //+ sign is for concat concept

SELECT DAY(LAST_DAY(date_vaiable));
于 2013-06-26T07:10:08.610 回答