SQL Server 如何找出两列之间的差异?

我想找出 SQL Server 中两个列之间的区别,它们是仅使用 C# 代码和无 LINQ 的 DataTime 类型。


public class PrintTheQ

{

    public DateTime LastStatusUpdate { get; set; }

    public DateTime AddedToQueue { get; set; }

}


public static PrintTheQ TestQ ()

{

        PrintTheQ TheQ = new PrintTheQ();


        string CS = "data source =(local); database = Sample1; Integrated Security=SSPI";


        using (SqlConnection connection = new SqlConnection(CS))

        {

            connection.Open();

            SqlCommand command = new SqlCommand("select *from TelecomTable WHERE AddedToQueue  >= DATEADD (day, -2, GetDate()) ", connection);


            using (SqlDataReader reader = command.ExecuteReader())

            {

                TheQ.AddedToQueue = Convert.ToDateTime((reader, "AddedToQueue"));

                TheQ.LastStatusUpdate = Convert.ToDateTime((reader, "LastStatusUpdate"));

            }

        }


        return TheQ;

}


慕斯709654
浏览 91回答 2
2回答

隔江千里

按照您的要求不在数据库级别处理此任务并且不使用 linq,那么您需要的只是向您的类添加一个属性,并且每次您需要读取它时都会计算此属性(如果您想更改它,则只获取,然后改变操作数)只需向您的班级添加一个只读属性public class PrintTheQ{    public DateTime LastStatusUpdate { get; set; }    public DateTime AddedToQueue { get; set; }    public int DayDiff    {        get {return (int)(LastStatusUpdate - AddedToQueue).TotalDays;}    }}此示例计算天数差异,但当然,从最低日期减去最高日期创建的TimeSpan 结构也可以为您提供 TotalHours、TotalMinutes、TotalSeconds、TotalMilliseconds 甚至 Ticks 方面的差异这可能是做这件事最合乎逻辑的方法。没有 foreach 对当前代码的影响最小,没有要更改的数据库代码,没有更改您的实际加载代码。此外,如果您更改 LastStatusUpdate 的值,则 DayDiff 属性将在您下次阅读时自动重新计算。

德玛西亚99

尝试 : SELECT DATEDIFF(year, @startdate, @enddate)year 表示您要返回的度量周期,可以是月或日
打开App,查看更多内容
随时随地看视频慕课网APP