如何在网格视图中单独显示日期和时间

时间:2016-06-28 10:06:52

标签: c# sql-server

我在SQL表中有一列。名称是Intime。其数据类型为nvarchar。它存储日期和时间。但我要分开日期和时间。

我试过这个问题:

select  AttendanceDate,
        SUBSTRING(convert(varchar,intime,113),1,11)[Intime],
        SUBSTRING(convert(varchar,intime,113),13,19)[InTime],
        InDeviceId,
        OutTime,
        OutTime,
        OutDeviceId, 
        dbo.MinutesToDuration(duration) as Duration,
        Status 
from dbo.AttendanceLogs 
where  EmployeeId=2938 
order by AttendanceDate desc

但如果我在网格视图中传递相同的SQL命令则无效。

public void Bind()
    {
        SqlCommand cmd = new SqlCommand("select AttendanceDate,SUBSTRING(convert(varchar,intime,113),1,11) as [InTime],SUBSTRING(convert(varchar,InTime,113),13,19) as [Intime],InDeviceId,OutTime,OutTime,OutDeviceId, dbo.MinutesToDuration(duration) as Duration,Status from dbo.AttendanceLogs where  EmployeeId='" + empIdtxt.Text + "' and year(AttendanceDate)=" + ddlYear.SelectedItem + "  and month(AttendanceDate)=" + ddlmnt.SelectedValue + " order by AttendanceDate desc", con);
        SqlDataAdapter da = new SqlDataAdapter();
        cmd.Connection = con;
        da.SelectCommand = cmd;
        DataTable dt = new DataTable();
        da.Fill(dt);
        GridView1.DataSource = dt;
        GridView1.DataBind();

        GridView1.ControlStyle.Font.Size = 10;

    }

哪里可能出现问题?

1 个答案:

答案 0 :(得分:0)

用这个

替换你的代码
   public void Bind()
        {
            SqlCommand cmd = new SqlCommand(@"select AttendanceDate,SUBSTRING(convert(varchar,intime,113),1,11) as [InTimeD],SUBSTRING(convert(varchar,InTime,113),13,19) as [IntimeT],
            InDeviceId,OutTime,OutTime,OutDeviceId, dbo.MinutesToDuration(duration) as Duration,Status from dbo.AttendanceLogs
                where  EmployeeId='" + empIdtxt.Text + "' and year(AttendanceDate)=" + ddlYear.SelectedItem.Value +
                                     "  and month(AttendanceDate)=" + ddlmnt.SelectedValue + " order by AttendanceDate desc", con);
            SqlDataAdapter da = new SqlDataAdapter(cmd,con);
            DataTable dt = new DataTable();
            da.Fill(dt);
            GridView1.DataSource = dt;
            GridView1.DataBind();

            GridView1.ControlStyle.Font.Size = 10;

        }

此行不会过滤任何一年它返回下拉列表的对象

year(AttendanceDate)=" + ddlYear.SelectedItem + "