美文网首页
Oracle部分语句使用

Oracle部分语句使用

作者: denok | 来源:发表于2017-10-25 20:33 被阅读0次

公司业务涉及通过时间范围来查询所需要的字段,瞎折腾了几下,写出来记录.
查询之前一定要看字段是不是date类型,自己傻呵呵的去用to_char,to_date去查,怎么都搜不到结果,还以为自己写的有问题
从最经典的问题开始,我查询某一个时间点到另一个时间点的数据,怎么做?

select * from 表名 where 
to_char (查询字段,'yyyy-mm-dd')>='查询时间'
and 
to_char (查询字段,'yyyy-mm-dd')<='查询时间';

select * from 表名 where  查询字段>= 
 to_date ('查询日期' ,'yyyy-mm-dd')
and  查询字段<= 
to_date ('查询日期','yyyy-mm-dd');

更改date为指定格式-不支持毫秒,所以ff没法用-会报错
alter session set nls_date_format = 'dd-MON-yy hh:mi:ss.ff AM';
更改timestamp为指定格式-21-7月 -17 12.02.15.000000 上午
alter session set NLS_LANGUAGE = 'SIMPLIFIED CHINESE';
alter session set nls_timestamp_format = 'dd-MON -yy hh:mi:ss.ff AM';

to_date的特点是,如果查询10月1日到10月29日数据,那么数据中包含1日的数据不包含29日的数据,需要顺延一天
to_char可以正常显示

查询以小时为单位的数据时发现,
要保持与yyyy-mm-dd hh24:mi:ss一致的时间格式
to_date可以正常查询
to_char的话不能含有空格否则查询不出来.

那么如果遇到以日期为单位的表名,查询表里具体的字段,如何写?

外面走循环生成SQL表名,生成的SQL,一次一次的向数据库发送请求

还有一种处理是使用游标

还有一种处理是使用@SQL拼接?

另外sysdate 查询的是数据库时间,可以通过
1、首先通过语句查询一下当前的时区是什么?

SELECT DBTIMEZONE FROM DUAL;
此时返回的结果是'+0.00',这就意味着当前的Oracle时间是GMT+0.00,就是格林威治标准时间。

2、修改Oracle的时区设置。

ALTER DATABASE SET TIME_ZONE='+8.00';
修改之后,重新启动Oracle数据库。

相关文章

网友评论

      本文标题:Oracle部分语句使用

      本文链接:https://www.haomeiwen.com/subject/bcscpxtx.html