根据C#中的MySQL的Date值过滤DataGridView

问题描述

新秀的问候。

我正在为地质工作人员编写一个时移日历(如下所示)。

DataGridView

我进行了很多搜索,但找不到合适的解决方案。我想基于当前月份(而不是间隔时间)限制DataGridView中显示的记录。例如,团队成员应该能够查看属于8月的记录(如果月份为8月)。下个月应该新鲜。

我有一个获取”按钮,它填充了DataGridView和从MysqL获取的Date列。该程序应在DataGridView(或MysqL表)的“日期”列(在DB中命名为dateStart)中进行搜索,并仅显示属于2020年8月的记录。我的日期格式为YYYY-MM-DD。

//RETRIEVE FROM DB
    private void retrieve()
    {
        dtgList.Rows.Clear();

        dtpDate.Format = DateTimePickerFormat.Custom;


        //sql STMT
        string sql = $"SELECT * FROM {tbl_staffCode} ";
        cmd = new MysqLCommand(sql,con);

        //OPEN CON,RETRIEVE,FILL DGVIEW
        try
        {
            con.open();

            adapter = new MysqLDataAdapter(cmd);

            adapter.Fill(dt);

            //LOOP THRU DT
            foreach (DaTarow row in dt.Rows)
            {
                populate(row[0].ToString(),row[1].ToString(),row[2].ToString(),row[3].ToString(),row[4].ToString(),row[5].ToString());
            }



            con.Close();

            //CLEAR DT
            dt.Rows.Clear();
        }
        catch (Exception ex)
        {

            MessageBox.Show(ex.Message);
            con.Close();
        }
    }

非常感谢您。

解决方法

感谢Chetan Ranpariya拓宽了我的视野。 解决方案在这里;

DateTime dtime = DateTime.Now;
        int month = dtime.Month;
        int year = dtime.Year;

        //SQL STMT
        string sql = $"SELECT * FROM {tbl_staffCode} WHERE MONTH(DateStart) = {month} AND YEAR(DateStart) = {year} ";
        cmd = new MySqlCommand(sql,con);