Oracle根据时间查询的一些常见情况汇总

2022-12-08 0 820

目录1. 查询时间段之内的数据2. 日期和字符转换函数用法(to_date,to_char)3. 查询某天星期几4. 两个日期直接相差天数5. 查询出一个空的时间类型6. 用于计算date1和date2之间有几个月7. 指定时间的下一个星期几(由char指定)所在的日期,8. 获取今年的天数9. 获取当前时间是今年的第多少天10. 返回日期列表中最晚日期11. 计算时间差12. 查找月的第一天,最后一天13. 查询时间之前的时间(查之后把减号换成加号)总结

1. 查询时间段之内的数据查询2021-01-01 至 2021-01- 02 的数据SELECT *FROM t_table1 tWHERE t.d_time >= to_date(\’2021-01-01 00:00:00\’, \’yyyy-mm-dd hh24:mi:ss\’)AND t.d_time <= to_date(\’2021-01-02 23:59:59\’, \’yyyy-mm-dd hh24:mi:ss\’);

以下SQL,只会查询2021-01-01至2021-1-2 00:00:00的数据

SELECT *FROM T_EVENT_MANAGEMENT tWHERE t.s_ra_time >= to_date(\’2021-01-01\’, \’yyyy-mm-dd\’)AND t.s_ra_time <= to_date(\’2021-01-02\’, \’yyyy-mm-dd\’);–to_date(\’2021-01-02\’, \’yyyy-mm-dd\’) = 2021-01-02 00:00:00 超过2号0点属于2号的数据不会显示

2. 日期和字符转换函数用法(to_date,to_char)select to_char(sysdate,\’yyyy-mm-dd hh24:mi:ss\’) as nowTime from dual; –结果:2022-01-26 13:04:53select to_char(sysdate,\’yyyy\’) as nowYear from dual; –结果:2022select to_char(sysdate,\’mm\’) as nowMonth from dual; –结果:01select to_char(sysdate,\’dd\’) as nowDay from dual; –结果:26select to_char(sysdate,\’hh24\’) as nowHour from dual; –结果:13select to_char(sysdate,\’mi\’) as nowMinute from dual; –结果:04select to_char(sysdate,\’ss\’) as nowSecond from dual; –结果:53select to_date(\’2022-01-26 13:04:53\’,\’yyyy-mm-dd hh24:mi:ss\’) from dual

3. 查询某天星期几select to_char(to_date(\’2022-01-26\’,\’yyyy-mm-dd\’),\’day\’) from dual; –结果:星期三

4. 两个日期直接相差天数select floor(sysdate – to_date(\’20220101\’,\’yyyymmdd\’)) from dual;

5. 查询出一个空的时间类型select 1, TO_DATE(null) from dual;

Oracle根据时间查询的一些常见情况汇总

6. 用于计算date1和date2之间有几个月select months_between(to_date(\’12-31-2021\’,\’MM-DD-YYYY\’),to_date(\’01-31-2021\’,\’MM-DD-YYYY\’)) \”MONTHS\” FROM DUAL; –结果:11

7. 指定时间的下一个星期几(由char指定)所在的日期,NEXT_DAY(date,char) select next_day(sysdate,2) from dual; –当前时间的下一个周一–1表示星期日,2代表星期一

8. 获取今年的天数select add_months(trunc(sysdate,\’year\’), 12) – trunc(sysdate,\’year\’) from dual; –闰年的处理方法 to_char( last_day( to_date(\’02\’|| :year,\’mmyyyy\’) ), \’dd\’) –如果是28就不是闰年

9. 获取当前时间是今年的第多少天 select TO_CHAR(SYSDATE,\’DDD\’),sysdate from dual;

trunc[截断到最接近的日期,单位为天] ,返回的是日期类型

select sysdate S1, trunc(sysdate) S2, //返回当前日期,无时分秒 trunc(sysdate,\’year\’) YEAR, //返回当前年的1月1日,无时分秒 trunc(sysdate,\’month\’) MONTH , //返回当前月的1日,无时分秒 trunc(sysdate,\’day\’) DAY //返回当前星期的星期天,无时分秒 from dual

10. 返回日期列表中最晚日期select greatest(\’2021-01-04\’,\’2022-01-04\’,\’2019-02-04\’) from dual; –结果:2022-01-04

11. 计算时间差 select floor(to_number(sysdate-to_date(\’2020-11-02 15:55:03\’,\’yyyy-mm-dd hh24:mi:ss\’))/365) as spanYears from dual //时间差-年select ceil(months_between(sysdate,to_date(\’2020-11-02 15:55:03\’,\’yyyy-mm-dd hh24:mi:ss\’))) as spanMonths from dual //时间差-月select floor(to_number(sysdate-to_date(\’2020-11-02 15:55:03\’,\’yyyy-mm-dd hh24:mi:ss\’))) as spanDays from dual //时间差-天select floor(to_number(sysdate-to_date(\’2020-11-02 15:55:03\’,\’yyyy-mm-dd hh24:mi:ss\’))*24) as spanHours from dual //时间差-时select floor(to_number(sysdate-to_date(\’2020-11-02 15:55:03\’,\’yyyy-mm-dd hh24:mi:ss\’))*24*60) as spanMinutes from dual //时间差-分select floor(to_number(sysdate-to_date(\’2020-11-02 15:55:03\’,\’yyyy-mm-dd hh24:mi:ss\’))*24*60*60) as spanSeconds from dual //时间差-秒

12. 查找月的第一天,最后一天 SELECT Trunc(Trunc(SYSDATE, \’MONTH\’) – 1, \’MONTH\’) First_Day_Last_Month, –最后一月最后一天 Trunc(SYSDATE, \’MONTH\’) – 1 / 86400 Last_Day_Last_Month, –最后一月最后一天 Trunc(SYSDATE, \’MONTH\’) First_Day_Cur_Month, –当前月第一天 LAST_DAY(Trunc(SYSDATE, \’MONTH\’)) + 1 – 1 / 86400 Last_Day_Cur_Month –当前月最后一天 FROM dual;

13. 查询时间之前的时间(查之后把减号换成加号)当前时间减去7分钟的时间select sysdate,sysdate – interval \’7\’ MINUTE from dual当前时间减去7小时的时间select sysdate – interval \’7\’ hour from dual当前时间减去7天的时间select sysdate – interval \’7\’ day from dual当前时间减去7月的时间select sysdate,sysdate – interval \’7\’ month from dual当前时间减去7年的时间select sysdate,sysdate – interval \’7\’ year from dual时间间隔乘以一个数字(也就是8个小时*2倍,16个小时之前的数据)select sysdate,sysdate – 8 *interval \’2\’ hour from dual 获取七天之后的时间select (sysdate + 7) from dual;获取前一个月的时间(正数时是加月,负数时为减月)select add_months(sysdate,-1) from dual;select sysdate+1 from dual 加一天select sysdate+1/24 from dual 加1小时select sysdate+1/(24*60) from dual 加1分钟select sysdate+1/(24*60*60) from dual 加1秒钟

总结

到此这篇关于Oracle根据时间查询的文章就介绍到这了,更多相关Oracle时间查询内容请搜索悠久资源以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 oracle数据库 Oracle根据时间查询的一些常见情况汇总 https://www.u-9.cn/sql/oracle/6113.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

  • 0 +

    访问总数

  • 0 +

    会员总数

  • 0 +

    文章总数

  • 0 +

    今日发布

  • 0 +

    本周发布

  • 0 +

    运行天数

注册会员,众多资源免费下载