计算一个月内的天数

时间:2013-06-26 06:59:27

标签: mysql sql

在我的网页上,我有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个文本框值年和月。你可以问我这个问题吗?

2 个答案:

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

答案 1 :(得分:0)

如果您在查询中默认提供每个月的01该怎么办,不知道您的编程语言,只是为了提供一个想法

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

SELECT DAY(LAST_DAY(date_vaiable));