根据两个日期字符串取记录问题

backthought 2008-12-22 08:03:06
根据两日期字符串到数据库中取值.

select * from tbl
where date1 >= to_date('2008-12-22', 'yyyy-mm-dd')
and date1 <= to_date('2008-12-22', 'yyyy-mm-dd')

这样为什么取不到今天的记录?求教.
...全文
138 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjw2004 2008-12-22
  • 打赏
  • 举报
回复
楼上正解。
where date1 >= to_date('2008-12-22', 'yyyy-mm-dd') and date1 < to_date('2008-12-22', 'yyyy-mm-dd') + 1
如果date1字段建立了索引,上面的语句是可以用到索引的。
我前几天试了一下,如果对一个建了索引的字段同时用到了">=、<="索引就失效了,但是如果只有">=、<"索引就有效。
linzi 2008-12-22
  • 打赏
  • 举报
回复
只要对字段作了操作,应该都用不到索引,你可以这样:
where date1 >= to_date('2008-12-22', 'yyyy-mm-dd')
and date1 < to_date('2008-12-22', 'yyyy-mm-dd') + 1
backthought 2008-12-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 icss_zhen 的回复:]
SQL code楼主为什么不直接用:select*fromtblwhereto_char(date1,'yyyy-mm-dd')='2008-12-22';
[/Quote]
我是根据页面上用户输入的两个起始时间来查数据

[Quote=引用 4 楼 zounf 的回复:]
这样写可以:
select * from tbl
whereTRUNC(date1) >= to_date('2008-12-22', 'yyyy-mm-dd')
andTRUNC(date1) <= to_date('2008-12-22', 'yyyy-mm-dd')
[/Quote]
这样也没用到索引吧?
mantisXF 2008-12-22
  • 打赏
  • 举报
回复
如果在列date1上建了索引,这样写就不会用到索引了。[Quote=引用 5 楼 icss_zhen 的回复:]
SQL code
楼主为什么不直接用:
select * from tbl
where to_char(date1,'yyyy-mm-dd') = '2008-12-22';
[/Quote]
icss_zhen 2008-12-22
  • 打赏
  • 举报
回复

楼主为什么不直接用:
select * from tbl
where to_char(date1,'yyyy-mm-dd') = '2008-12-22';
zounf 2008-12-22
  • 打赏
  • 举报
回复
这样写可以:
select * from tbl
where TRUNC(date1) >= to_date('2008-12-22', 'yyyy-mm-dd')
and TRUNC(date1) <= to_date('2008-12-22', 'yyyy-mm-dd')
fuyou001 2008-12-22
  • 打赏
  • 举报
回复
to_date('2008-12-22', 'yyyy-mm-dd'),只取年,月,日 会忽略掉了时,分,秒,默认为00:00:00
fuyou001 2008-12-22
  • 打赏
  • 举报
回复
where date1 >= to_date('2008-12-22', 'yyyy-mm-dd')
and date1 <= to_date('2008-12-22', 'yyyy-mm-dd')

to_date('2008-12-22', 'yyyy-mm-dd')取到的是12:22 00:00:00,如果这样取,是00:00:00的,
如果这个时间没有数据,就不会有
hebo2005 2008-12-22
  • 打赏
  • 举报
回复
to_date('2008-12-22', 'yyyy-mm-dd')
出来的结果是2008-12-22 00:00:00
两个时间段都是2008-12-22 00:00:00
自然没结果喽
记住ORACLE里的DATE必定是有时分秒的
只是00:00:00在工具里不显示出来而已
select * from tbl
where date1 >= to_date('2008-12-22', 'yyyy-mm-dd')
and date1 <= to_date('2008-12-22', 'yyyy-mm-dd')+0.99999

这样才行

17,092

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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