前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Oracle中的日期间查询

Oracle中的日期间查询

作者头像
陈树义
发布2022-04-29 10:41:18
发布2022-04-29 10:41:18
3.6K00
代码可运行
举报
文章被收录于专栏:陈树义陈树义
运行总次数:0
代码可运行

在Oracle中,如果要进行日期间的查询需要用到Oracle的内置函数to_date()。

1、Oracle日期查询的边界问题

此外,日期间的查询还涉及一个边界问题,因为每个人的思维方式不同,因此写出的语句都不同。

比如如果要查询2014年7月1日到2014年7月6日的数据:

代码语言:javascript
代码运行次数:0
运行
复制
1 select * from test
2 where intime >= to_date('2010-07-01', 'yyyy-mm-dd');
3 and intime < to_date('2010-07-06', 'yyyy-mm-dd') + 1;

这时候的查询语句可以查到7月1日到7月6日的数据,并且是包括了7月1日和7月6日这两天当天的数据的。

但如果你忘记写了第2行的等于号了,那么如果一条记录的时间刚好是7月1日凌晨00:00分插入的,那么这条数据也就查不出来。

但实际上这条数据是7月1日的数据,应该被查询出来。

而在第3行中,如果你忘记在后边+1,那么程序就认为你查询的是比“2010-07-06 00:00:00”这个时间小的记录,那么7月6号当天的是数据就查不出来了。

所以为了避免这种情况的发生,如果查询的日期是包含边界的话,那么:开始日期符号要等于,结束日期要+1。

2、Oracle的时间格式化字符串的格式

如果你想要查询7月5日中午12点钱的数据,你应该这样写:

代码语言:javascript
代码运行次数:0
运行
复制
1 select * from test
2 where intime < to_date('2014-07-05 12:00:00', 'yyyy-mm-dd  hh24:mi:ss'); 

因为Oracle是不区分大小写的,所以如果你在第2行的to_date函数中把日期格式写成:'yyyy-MM-dd HH24:mm:ss',Oracle会报错:格式代码出现两次。

因为对于Oracle来说,MM与mm是一样的。所以,Oracle中日期的格式化字符串应该是这样的:“yyyy-mm-dd hh24:mi:ss”。

其中hh24表示24小时制表示,如果要换成12小时制,则换成“hh12”即可。

而在MySQL的SQL查询中,日期格式是这样写的“yyyy-MM-dd HH:mm:ss",其中大写的MM表示月、小写的mm表示分钟。

而大写的HH表示用24小时制表示,如果写成hh则表示用12小时制表示。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档