我来自印度(这可能与文化信息有关)。我正在使用MS-ACCESS 2010 32位作为后端在C#.Net 2010 Express中构建桌面应用程序。我正在使用OLEDB进行数据库连接。 我有一个名为dt的列作为日期/时间,其具有以下值:
20-09-2016 22:53:32
19-08-2016 22:54:24
20-09-2016 22:56:01
22-09-2016 22:56:27
22-09-2016 22:56:41
我需要按日期,按月和按年获取记录。 直到现在我无法完成日期部分,因此无法在月份和年份上工作。以下是我的代码:
b.com.CommandText = "SELECT * FROM srvtrans WHERE DateTime.Parse(dt)=@a ORDER BY sno DESC";
b.com.Parameters.Add("@a", dtp_srdmy.Value.ToShortDateString());
Show(dtp_srdmy.Value.ToShortDateString());
b.con.State == ConnectionState.Closed)
con.Close();
mytemp = new DataTable();
da.Fill(mytemp);
我也尝试过以下变化:
WHERE CONVERT(VARCHAR(10),dt,111)=@a
WHERE CONVERT(VARCHAR(10),dt,101)=@a
WHERE dt LIKE '%@a%'
WHERE DateTime.Parse(dt)=@a
WHERE dt=DateValue(@a)
WHERE CAST(dt AS DATE)=@a
WHERE CONVERT(varchar, dt, 101)=@a
WHERE DATE(dt)=@a
WHERE dt=@a
但它们都不适合我。请回复在sql查询中应该进行哪些更新,以按日期,按月和按年获取记录。提前谢谢。
答案 0 :(得分:3)
b.com.CommandText = "SELECT * FROM srvtrans WHERE dt = @a ORDER BY sno DESC";
b.com.Parameters.Add(new System.Data.OleDb.OleDbParameter("@a", OleDbType.DBDate) {Value = dtp_srdmy.Value });
con.Open();
dtp_srdmy
可能是一个用户控件({em>由@Gord Thompson
在下面的评论中指出,可能是DateTimePicker )或其他类型Value
是返回DateTime
实例的属性。OleDbType
枚举指定基础访问类型,我猜测它是DBDate
但我可能是错的,如有必要请更正。答案 1 :(得分:1)
以下代码应该可以正常工作:
b.com.CommandText = "SELECT * FROM srvtrans WHERE DATEVALUE(dt)=DATEVALUE(@a) ORDER BY sno DESC";
b.com.Parameters.Add("@a", dtp_srdmy.Value);
如果这有帮助就Upvote。