[英]Get COUNT of data at the current hour of system date
我在 Access 中有一個數據表 DateTimeLog 具有日期/時間數據類型,而其他 rest 是字符串。
我需要使用指定的 ModelLog 獲取系統日期最后一小時的數據總行數。 但是我想不出使用 MS Access 的正確查詢結構,因為我對 MS Access 很陌生。
下面顯示了我如何插入數據:
DateTime now = DateTime.Now;
var today = now.ToString("g");
DateTime d = DateTime.Parse(today);
const string sql = @"INSERT INTO timer(DateTimeLog, ShiftLog, CTLog, WorkcellLog, ModelLog, StationLog)VALUES(@d, @shift, @ct, @wc, @wm, @ws)";
OleDbCommand cmd = new OleDbCommand(sql, connection);
cmd.Parameters.Add("@d", OleDbType.DBTimeStamp).Value = d;
cmd.Parameters.Add("@shift", OleDbType.VarChar).Value = shiftlb.Text;
cmd.Parameters.Add("@ct", OleDbType.VarChar).Value = timerlb.Text;
cmd.Parameters.Add("@wc", OleDbType.VarChar).Value = wclb.Text;
cmd.Parameters.Add("@wm", OleDbType.VarChar).Value = mlb.Text;
cmd.Parameters.Add("@ws", OleDbType.VarChar).Value = slb.Text;
try
{}
catch(exception e)
{}
好的,所以您清楚地知道如何使用參數運行數據庫查詢,您只需將該查詢作為ExecuteScalar
運行,將結果轉換為 int
SELECT COUNT(*) FROM timer WHERE dateTimeLog >= @d
然后將您的 d 參數設置為一小時前
cmd.Parameters.Add("@d", OleDbType.Date).Value = DateTime.Now.AddHours(-1);
旁注我建議不要通過字符串來回跳,只是為了減少時間的秒數。 而是考慮:
var d = DateTime.Now;
d = d.AddTicks( -(d.Ticks % (60*TimeSpan.TicksPerSecond)));
或者可能
var d = DateTime.Now;
d = d.AddMilliseconds(-d.Milliseconds).AddSeconds(-d.Seconds);
我發現了另一種在同一小時內獲取數據數量的方法。 創建兩個新列,HourID 和 TodayDate 分別代表 24 小時格式的當前小時和今天的日期。 相應地插入數據。
獲取數據計數:
const string sql = @"SELECT COUNT(*) FROM timer WHERE HourID = @h AND TodayDate = @td AND ModelLog = @m";
OleDbCommand cmd = new OleDbCommand(sql, connection);
cmd.Parameters.Add("@h", OleDbType.VarWChar).Value = DateTime.Now.ToString("%H");
cmd.Parameters.Add("@td", OleDbType.VarWChar).Value = DateTime.Now.ToShortDateString();
cmd.Parameters.Add("@m", OleDbType.VarWChar).Value = mlb.Text;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.