请问sql语句如何统计ordertime在指定的两个日期(变量传递的日期,比如银行查询两个日期之间的明细)之间记录?

haohao7118 2020-02-26 09:31:11


如图access数据库表为table1,sql语句如何统计ordertime在指定的两个日期(变量传递的日期,比如银行查询两个日期之间的明细)之间记录?

度娘里面有的帖子说使用如下语句:
<%

stratime=request(stratime) '第三方日期组件获得
endtime=request(endtiem) '第三方日期组件获得

sql="SELECT * FROM table1 WHERE mydate BETWEEN '"&starttime&"' and '"&endtime"'"; ‘来自度娘的语句


%>


但我测试不出结果,始终为0。

请教大神们,哪儿出了问题?正确的写法是什么?
先谢过!
...全文
358 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
haohao7118 2020-03-09
  • 打赏
  • 举报
回复
【分享】关于between and 日期不能包括当天bug解决方案:

在and后的日期上-1秒

第二种方案是:使用datediff函数
haohao7118 2020-02-26
  • 打赏
  • 举报
回复
引用 2 楼 haohao7118 的回复:
[quote=引用 1 楼 qq_63572063 的回复:]
sql="SELECT * FROM table1 WHERE mydate BETWEEN #"&starttime&"# and #"&endtime"#"


经检测,兄弟的语句能通过。确实是在不同数据库中的语法问题,似乎‘日期’适用于SqlServer数据库,而Access要用#日期#。

不过,between语句有一个缺陷,就是当变量starttime和endtime为短日期格式,而数据库存储的是长日期格式的时候,查询同一天的数据无效。[/quote]

问题分析:
某个表某个字段是Datetime型 以"YYYY-MM-DD 00:00:00" 存放
(1)、例如数据
2019-01-22 21:22:22
2019-01-22 19:21:11
2019-01-22 23:10:22

(2)、用 select * from TABLE where date between #2019-1-22# And #2019-1-22# ,想查日期为2019-1-22的记录,结果查不到。

(3)、问题原因
短日期类型默认Time为00:00:00,所以当使用between作限制条件时,就相当于between #2019-1-22 00:00:00# and #2019-1-22 00:00:00#,因此就查不出数据。

这也许是between and的一个缺陷,也就是说如果是处理短日期时间变量时,and后的变量自动赋值为#2019-01-22 23:59:59#样式即可。
haohao7118 2020-02-26
  • 打赏
  • 举报
回复
引用 1 楼 qq_63572063 的回复:
sql="SELECT * FROM table1 WHERE mydate BETWEEN #"&starttime&"# and #"&endtime"#"


经检测,兄弟的语句能通过。确实是在不同数据库中的语法问题,似乎‘日期’适用于SqlServer数据库,而Access要用#日期#。

不过,between语句有一个缺陷,就是当变量starttime和endtime为短日期格式,而数据库存储的是长日期格式的时候,查询同一天的数据无效。
  • 打赏
  • 举报
回复
sql="SELECT * FROM table1 WHERE mydate BETWEEN #"&starttime&"# and #"&endtime"#"

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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