美文网首页
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