从日期字段

时间:2016-06-25 04:41:18

标签: c# mysql sql-server

我有两个下拉列表 - 一年零一个月。如果记录存在整个月,我必须打印gridview。为此,我有以下代码。我知道我的SQL查询是完全错误的。

con.Open();
        //count dates 
        string cmd = "SELECT COUNT(EXTRACT(DATE FROM Duty_Date)) FROM DoctorActivity WHERE MONTH=@MONTH AND YEAR=@YEAR AND ([User_Id]=@User_Id)";
        SqlCommand commd = new SqlCommand(cmd, con);
        commd.Parameters.AddWithValue("@User_Id", DropDownList1.Text);
        commd.Parameters.AddWithValue("@MONTH", DropDownList2.Text);
        commd.Parameters.AddWithValue("@YEAR", DropDownList3.Text);
        int dateCount = (int)commd.ExecuteScalar();
        if (dateCount >= 30)
        {

            //show computer id and status in gridview
            GridView1.DataBind();
            GridView1.Visible = true;
        }

我还是处理SQL查询的新手。请帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:1)

Extract是MySql函数,在Sql server 2008中提取datepart你可以使用

SELECT CONVERT(date, getdate())  

或者如果您使用的是旧版本,则可以使用

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, @your_date))

所以你必须将你的查询改为这样的

SELECT COUNT(distinct convert(date,Duty_Date)) FROM DoctorActivity WHERE MONTH=@MONTH AND YEAR=@YEAR AND [User_Id]=@User_Id

如果在duty_date字段中有重复,请使用distinct

答案 1 :(得分:1)

您必须使用CONVERT(date, yourdate)在sql server中提取日期部分,在此查询中更改日期提取部分

SELECT COUNT(convert(date,Duty_Date)) FROM DoctorActivity