access 时间和日期查询SQL

GIS2007_S 2009-07-26 03:30:20
access数据库有日期和时间字段,日期格式是:2008-5-12 00:00:00;时间格式是:1899-12-30 12:30:25.

现在用四个控件(Dev) 分别表示为barEditItem_fromDate(开始日期);barEditItem_toDate(结束日期);barEditItem_fromTime(开始时间);barEditItem_toTime(结束时间)。根据这四个控件输入的内容来判断是否有符合数据库条件的查询。单独的日期查询可以这样写:selectSql = "select * from table where 日期 between #" + dateFrom +" # and #" + dateTo +"# " ;
如何根据日期和时间同时查询呢?SQL如何写?请指教!

...全文
2078 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
GIS2007_S 2009-07-31
  • 打赏
  • 举报
回复
用C#处理好了再查询不可以吗?

能具体说说吗?
燃烧的荷尔蒙 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 flyerwing 的回复:]
selectSql = "select * from table where 日期 between #" + dateFrom + " " + fromTime +" #  and  #" + dateTo + " " + toTime +"# " ; 

两边加#就好了!
[/Quote]
是的
wangan2008 2009-07-31
  • 打赏
  • 举报
回复
up
特别 2009-07-31
  • 打赏
  • 举报
回复
如果楼主日期格式的时间部分总是00:00:00,时间格式的日期部分总是1899-12-30的话,可以这样进行查询。
在查询前先将用户设置的条件处理一下,
只取barEditItem_fromDate(开始日期)和barEditItem_toDate(结束日期)的日期部分,后面接上时间部分 “00:00:00”,
形成日期条件形式如 日期 between "#"+开始日期(yyyy-mm-dd)+" 00:00:00#" and "#"+结束日期(yyyy-mm-dd)+" 00:00:00#"
例如楼主开始日期为2009-1-1,结束日期为2009-3-4,则形成如下格式
日期 between #2009-1-1 00:00:00# and #2009-1-1 00:00:00#

取barEditItem_fromTime(开始时间)和barEditItem_toTime(结束时间)的时间部分,前面接上“1899-12-30”,
形成时间条件形式如 时间 between "#1899-12-30 "+开始时间(hh:mm:ss)+"#" AND "#1899-12-30 "+结束时间(hh:mm:ss)+"#"
例如楼主开始时间为8:35:45,结束时间为21:20:00,则形成如下格式
时间 between #1899-12-30 08:35:45# AND #1899-12-30 21:20:00#

qgylovelj 2009-07-31
  • 打赏
  • 举报
回复
select * from Text where barEditItem_fromDate between #2009-07-12 00:00:00# and #2009-07-12 23:59:59#
angelo1011 2009-07-31
  • 打赏
  • 举报
回复
建议你用参数进行传值。
以下是C#方面的参考代码:
string str开始时间 = this.dateTimePicker开始时间_日期.Text.Trim() + " " + this.dateTimePicker开始时间_时间.Text.Trim();
string str截止时间 = this.dateTimePicker截止时间_日期.Text.Trim() + " " + this.dateTimePicker截止时间_时间.Text.Trim();

string strSql = "SELECT 商品编号,商品名称,Sum(数量) AS 商品数量,Sum(应付金额) AS 商品金额 FROM 销售表 WHERE 开单时间 >= @开始日期 AND 开单时间 <= @截止日期 GROUP BY 商品编号,商品名称 ORDER BY 商品编号 ASC ";
OleDbCommand objCommand = new OleDbCommand();

OleDbParameter str开始 = new OleDbParameter("@开始日期", OleDbType.DBTimeStamp);
str开始.Value = Convert.ToDateTime(str开始时间);
objCommand.Parameters.Add(str开始);

OleDbParameter str截止 = new OleDbParameter("@截止日期", OleDbType.DBTimeStamp);
str截止.Value = Convert.ToDateTime(str截止时间);
objCommand.Parameters.Add(str截止);

objCommand.CommandText = strSql;




你可以参考下~希望能帮到你。
GIS2007_S 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sdfkfkd 的回复:]
如果楼主日期格式的时间部分总是00:00:00,时间格式的日期部分总是1899-12-30的话,可以这样进行查询。

多谢你的参与。实际上需要的是 日期格式的1899-12-30 和时间格式的 00:00:00 组合形成的查询条件应该是2009-1-1 00:00:00 才对。
diffmaker 2009-07-30
  • 打赏
  • 举报
回复
为什么非要用SQL写呢?用C#处理好了再查询不可以吗?
GIS2007_S 2009-07-29
  • 打赏
  • 举报
回复
还是没有好的意见
flyerwing 2009-07-28
  • 打赏
  • 举报
回复
selectSql = "select * from table where 日期 between #" + dateFrom + " " + fromTime +" # and #" + dateTo + " " + toTime +"# " ;

两边加#就好了!
GIS2007_S 2009-07-28
  • 打赏
  • 举报
回复
以上思路都不行。
wuyq11 2009-07-26
  • 打赏
  • 举报
回复
select * from Text where barEditItem_fromDate between #2009-07-12 00:00:00# and #2009-07-12 23:59:59#
Snowdust 2009-07-26
  • 打赏
  • 举报
回复
跟日期一样的:
selectSql = "select * from table where 日期 between #" + dateFrom +" # and #" + dateTo +"# And 时间 between #" + timeFrom +" # and #" + timeTo +"# ";
孟子E章 2009-07-26
  • 打赏
  • 举报
回复
selectSql = "select * from table where 日期 between #" + dateFrom + " " + fromTime +" # and #" + dateTo + " " + toTime +"# " ;
GIS2007_S 2009-07-26
  • 打赏
  • 举报
回复
barEditItem_fromDate 格式为2008-5-12 00:00:00;barEditItem_fromTime格式为1899-12-30 12:30:25. 在查询时如何获得:日期为2008-5-12 ,时间为12:30:25。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧