我想找出 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 屬性將在您下次閱讀時自動重新計算。
- 2 回答
- 0 關注
- 78 瀏覽
添加回答
舉報
0/150
提交
取消