为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕斯709654 2022-12-24 09:59:30
我想找出 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;}
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

按照您的要求不在数据库级别处理此任务并且不使用 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 属性将在您下次阅读时自动重新计算。


查看完整回答
反对 回复 2022-12-24
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

尝试 : SELECT DATEDIFF(year, @startdate, @enddate)

year 表示您要返回的度量周期,可以是月或日


查看完整回答
反对 回复 2022-12-24
  • 2 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号