c#中查询access表中的日期,access数据库中日期格式为“日期/时间”,我想查询某一天的所有记录,请指点!

c#中查询access表中的日期,日期格式为“日期/时间”,查询是按某一天,我的代码如下:stringstr="select*fromyuanshishujuwheref... c#中查询access表中的日期,日期格式为“日期/时间”,查询是按某一天,我的代码如下:
string str = "select * from yuanshishuju where format(时间,'yyyy-mm-dd')=#"+dateTimePicker1.Value.ToShortDateString()+"#";
OleDbDataAdapter ad = new OleDbDataAdapter(str,conn);
DataSet ds = new DataSet();
ad.Fill(ds);
DTimedataGridView.DataSource = ds.Tables[0].DefaultView;
但是查询access数据库中已有数据时(如2010-10-20 11:12:13),我的dateTimePicker1.Value.ToShortDateString()数值为2010-10-20,结果查不到任何数据,请高手指点!

另外我使用string str = "select * from yuanshishuju where datediff(dd,#"+dateTimePicker1.Value.ToShortDateString()+"#,时间)=0;OleDbDataAdapter ad = new OleDbDataAdapter(str,conn);
DataSet ds = new DataSet();
ad.Fill(ds);
DTimedataGridView.DataSource = ds.Tables[0].DefaultView;
结果出现错误,提示缺少参数!
请高手指点
展开
 我来答
小骗骗子520
2010-11-11 · TA获得超过6607个赞
知道大有可为答主
回答量:1173
采纳率:0%
帮助的人:1865万
展开全部
其实有很多不同的。具体的如下。
1、自动增加字段需要重写。在access中经常使用的自动编号字段,导入到mssql后,他并不是自增型的int,需要手工设置,把导入后的自动编号字段的标识的“否”改为“是”,“种子”和“递增量”都为“1”,才能成为自动编号。
2、所有的默认值都丢失了。主要是数字类型和日期类型
3、所有now(),time(),date()要改成getdate()
4、所有datediff('d', time1, time2)要改成datediff(day, time1, time2)
5、所有datediff('ww', time1, time2)要改成datediff(week, time1, time2)
6、所有datediff('d', time1, time2)要改成datediff(day, time1, time2)
7、在mssql server中,有许多保留字,在access中是没有的,当你把数据导入到mssql的时候,问题就出来了。mssql在导入的时候,会自动给这些字段(包括数据库中的表名)加上“[字段名]”,因此,你必须修改你的脚本,把相应的字段名字(或者表名字)加上中括号,或改变字段名字为不是mssql的保留字
8、在用access关于时间的使用,大家喜欢使用“select * from aaaa while time="now()”这样的sql语句,然而,在mssql中没有“now()”这个函数,而是使用“getdate()”,所以,所有的sql语句中的“now()”必须换成“getdate()”。
9、日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对
SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。
10、转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。有时用smalldatetime型时,转化失败,而用datetime型时,转化成功
11、isnull(rowname)要改成rowname = null
12、CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能显示不完整
13、备注类型要通过cast(column as varchar)来使用
14、true/false类型不能使用,要变为1/0
15、对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete * from user where id=10",而对SQL SERVER数据库进行删除是用:"delete user where id=10".
16、在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用
17、在access的sql语句中的时间使用变量查询的时候,大家一般使用"select * from aaaa while time=#"变量名"#",在mssql中是不行的,他的语法是“select * from aaaa while time='"变量名"'"”。(意思是让你把日期时间变量当成字符串来使用)
18、原来ASP里的“DELETE * FROM ……”要改为“DELETE FROM ……”
19、有可能rs.update失败,修改成update 表名 set 字段=‘值’ 这样通过
20、access里面除法可以使用"\"或者"/",MSSQL里面只能使用"/"
21、在SqlServer中建立主键
22、如果还有问题用:rs.open sql,conn,3,2试试
有什么想了解更多的,到 看看,那里挺多文章的
explore_zjx
2010-10-29 · TA获得超过270个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:168万
展开全部
感觉你查询出的时间转换成一个字符串和一日期时间类型比较,直接用等号,不太容易查出吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
摆渡浮桥
2010-10-28 · TA获得超过3629个赞
知道大有可为答主
回答量:1610
采纳率:100%
帮助的人:2215万
展开全部
前面format函数将时间转换成了字符串,用字符串同“日期/时间”比较,所以查不到任何数据。

string str = "select * from yuanshishuju where 时间 >= #" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "# and 时间 < #" + dateTimePicker1.Value.AddDays(1).ToString("yyyy-MM-dd") + "#";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王姑凉why08
2012-11-22 · TA获得超过195个赞
知道小有建树答主
回答量:283
采纳率:100%
帮助的人:139万
展开全部
查询一天的数据信息:
format(时间,'yyyy-mm-dd') between #"+dateTimePicker1.Value.ToShortDateString()+"#" and #"+dateTimePicker1.Value.ToShortDateString()+" 23:59:59#" ;

string str = "select * from yuanshishuju where datediff('dd',#"+dateTimePicker1.Value.ToShortDateString()+"#,时间)=0

加上单引号吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
长鱼若山0f
2015-02-12 · TA获得超过426个赞
知道小有建树答主
回答量:297
采纳率:0%
帮助的人:147万
展开全部
我摸索了好久才摸出来的。

给你个SQL语句的例子:
"SELECT * FROM fangxing_data Where date_product =" + Convert.ToDateTime(DatePicker_ribao.SelectedDate.Value).ToOADate();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式