今天使用oracle数据库写SQL,需要查询两个时间内的特定数据之和

用到了sum函数和between函数

关于sum函数的了解:

todo:待添加

关于between函数:

使用方法:

b549ba9197c3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

between关键词使用方法.png

感谢

https://blog.csdn.net/hpdlzu80100/article/details/80767524

1、sql语句中between的边界:

有如下数据库:

b549ba9197c3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

sum函数与between函数数据库图.jpg

使用如下sql语句查询001-024这个设备在2018-08-01~2018-08-02分别的工作时长:

SELECT

RUNNING_TIME

FROM

"T_EQ_SCADA_RUNNING_TIME"

WHERE

code = '001-024' AND working_date BETWEEN

to_date( '2018-08-01', 'yyyy-mm-dd' )

AND

to_date('2018-08-02','yyyy-mm-dd')

结果如下:

b549ba9197c3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

查询001-024在2018-08-01~2018-08-02的工作时长.jpg

证明在oracle中,between是包含左右全闭区间的。

暂时只在oracle中验证,其他数据库经查阅资料:

在mysql数据库中:

https://blog.csdn.net/u010339647/article/details/52425389

b549ba9197c3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

修改001-024的2018-08-02时间为0点多一秒.jpg

查询结果不包含2018-08-02零点过一秒的数据:

b549ba9197c3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

查询结果不包含001-024在2018-08-02零点过一秒的数据.jpg

所以sql语句中between查询时,如果是yyyy-mm-dd格式的,会默认为该日的00:00:00,超过时间则都不在该区间内

那么问题来了:not between 呢?

我们查询001-024不在2018-08-01~2018-08-02的工作时长,最终查询结果:

b549ba9197c3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

查询001-024不在2018-08-01~2018-08-02的工作时长.jpg

查到了001-024设备在2018-08-03工作时长。

所以答案是不包含,左右全开区间。

2、between时间的格式问题

在between后的日期,

SELECT

RUNNING_TIME

FROM

"T_EQ_SCADA_RUNNING_TIME"

WHERE

code = '001-024' AND working_date BETWEEN '2018-08-01' AND '2018-08-02'

则会报 Oracle 异常 ORA-01861: literal does not match format string(字符串格式不匹配)

问题在于直接写入了字符串格式,数据库不识别

应使用如下语句:

to_date( '2018-08-01', 'yyyy-mm-dd' ) AND to_date('2018-08-02','yyyy-mm-dd')

感谢:

解决:Oracle 异常 ORA-01861: literal does not match format string(字符串格式不匹配)

https://blog.csdn.net/qq122261257/article/details/8613735/

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐