Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算两个日期之间的行数_C#_Javascript_Jquery_Sql - Fatal编程技术网

C# 计算两个日期之间的行数

C# 计算两个日期之间的行数,c#,javascript,jquery,sql,C#,Javascript,Jquery,Sql,在我的数据库中,我有一个名为IsStaff的列名,它的返回值是位。因此,公司的员工可能生病(1)或没有生病(0)。如何编写一个sql查询来计算特定日期之间1和0的所有数字,并将其表示在jquery表中。这就是我所做的: public List<Staff> Method(string Date1, string Date2) { DateTime d = Convert.ToDateTime(Date1); string date1 = d.

在我的数据库中,我有一个名为
IsStaff
的列名,它的返回值是位。因此,公司的员工可能生病(1)或没有生病(0)。如何编写一个sql查询来计算特定日期之间1和0的所有数字,并将其表示在jquery表中。这就是我所做的:

 public List<Staff> Method(string Date1, string Date2)
    {
        DateTime d = Convert.ToDateTime(Date1);
        string date1 = d.ToLongDateString();

        DateTime dd = Convert.ToDateTime(Date2);
        string date2 = dd.ToLongDateString();

        List<Staff> LBD = new List<Staff>();
        SqlConnection conn = new SqlConnection etc...
        SqlCommand command = new SqlCommand(@"SELECT * From TableName 
                                             WHERE Cast([Time] AS DATE) > @Time 
                                                 AND CAST([Time] AS DATE) < @Time2 
                                             ORDER BY Time Desc", conn);
        command.Parameters.AddWithValue("@Time", date1);
        command.Parameters.AddWithValue("@Time2", date2);

        conn.Open();
        SqlDatadata data = command.Executedata();
        while (data.Read())
        {
            Staff l = new Staff();
            l.IsStaff = data["IsStaff"].ToString();
            l.Name = data["Name"].ToString();
            ........
            LBD.Add(l);
        }
        conn.Close();
        return LBD;
    }
公共列表方法(字符串Date1、字符串Date2)
{
DateTime d=Convert.ToDateTime(Date1);
string date1=d.ToLongDateString();
DateTime dd=Convert.ToDateTime(日期2);
string date2=dd.ToLongDateString();
List LBD=新列表();
SqlConnection conn=新的SqlConnection等。。。
SqlCommand=newsqlcommand(@“从表名中选择*)
演员位置([时间]为日期)>@Time
和演员([时间]作为日期)<@Time2
按时间顺序描述(康涅狄格州);
command.Parameters.AddWithValue(“@Time”,date1);
command.Parameters.AddWithValue(“@Time2”,date2);
conn.Open();
SqlDatadata=command.Executedata();
while(data.Read())
{
职员l=新职员();
l、 IsStaff=数据[“IsStaff”].ToString();
l、 名称=数据[“名称”]。ToString();
........
LBD.添加(l);
}
康涅狄格州关闭();
返回LBD;
}
我可以成功获取两个日期之间的数据,但如何获取特定员工生病的总时间

功能表(数据){
var表=‘生病员工的姓名’和‘无生病员工的姓名’;
var-rowID=0;
用于(数据中的var人员){

var row='为什么不计算SQL中的值

        SqlCommand command = new SqlCommand(@"SELECT StaffID, Name, sum(IsStaff), 
                                              sum(case when IsStaff = 1 then 0 else 1 end) 
                                               From TableName 
                                             WHERE Cast([Time] AS DATE) > @Time 
                                                 AND CAST([Time] AS DATE) < @Time2 
                                             GROUP BY StaffID, Name
                                             ORDER BY Time Desc", conn);
SqlCommand=newsqlcommand(@“选择StaffID、Name、sum(IsStaff)),
总和(IsStaff=1时为0,否则为1结束)
从表名
演员位置([时间]为日期)>@Time
和演员([时间]作为日期)<@Time2
按标记、名称分组
按时间顺序描述(康涅狄格州);

或者使用Linq获取从员工列表中计算出的值。

计算特定日期使用之间的所有1和0的数量:

    SELECT StaffID, count(IsStaff) From TableName                          
    WHERE Cast([Time] AS DATE) > @Time    
      AND CAST([Time] AS DATE) < @Time2 
    GROUP BY StaffID 
    ORDER BY count(IsStaff) desc
从TableName中选择StaffID、count(IsStaff)
演员位置([时间]为日期)>@Time
和演员([时间]作为日期)<@Time2
按斯塔夫分组
按计数排序(IsStaff)说明
要获取特定员工生病的总时间,请使用:

    SELECT StaffID, sum(IsStaff) From TableName                          
    WHERE Cast([Time] AS DATE) > @Time    
      AND CAST([Time] AS DATE) < @Time2 
    GROUP BY StaffID
    ORDER BY sum(IsStaff) desc
从TableName中选择StaffID,sum(IsStaff)
演员位置([时间]为日期)>@Time
和演员([时间]作为日期)<@Time2
按斯塔夫分组
按总和排序(IsStaff)说明

我们需要更多关于您的架构和所需输出的详细信息来帮助您。我将如何使用sql进行计算?我已更改了sql。请查看我的答案。我是否可以说select*,因为将来如果我想向我的表中添加更多字段,那么我可以这样做?在这种情况下,我会从tableName、sum()中选择select*..?否,因为select中的所有字段都必须在group by子句中。然后,您应该在开始时决定select的字段。第二个答案显示在sql server管理中执行时出现错误。操作数数据类型位对于sum运算符无效。
    SELECT StaffID, sum(IsStaff) From TableName                          
    WHERE Cast([Time] AS DATE) > @Time    
      AND CAST([Time] AS DATE) < @Time2 
    GROUP BY StaffID
    ORDER BY sum(IsStaff) desc