ITPub博客

首页 > 数据库 > Oracle > [20210312]如何取整月日期.txt

[20210312]如何取整月日期.txt

原创 Oracle 作者:lfree 时间:2021-03-12 09:46:25 1 删除 编辑

[20210312]如何取整月日期.txt

--//今天检查数据库,发现开发写的sql语句如下:
--//sql_id = 24fvg57jhzp6t
SELECT TO_CHAR (XXXXXX_YYY.BJBC_MZZZRS_XH.BEGINTIME, :"SYS_B_0")
      ,XXXXXX_YYY.BJBC_MZZZRS_XH.DEPT_NAME
      ,XXXXXX_YYY.BJBC_MZZZRS_XH.DEPT_CODE
      ,XXXXXX_YYY.BJBC_MZZZRS_XH.DOCTOR_NAME
      ,XXXXXX_YYY.BJBC_MZZZRS_XH.DOCTOR_CODE
      ,XXXXXX_YYY.BJBC_MZZZRS_XH.BEGINTIME
  FROM XXXXXX_YYY.BJBC_MZZZRS_XH
 WHERE TO_CHAR (XXXXXX_YYY.BJBC_MZZZRS_XH.BEGINTIME, :"SYS_B_1") = :"SYS_B_2"

> @bind_cap_awr 24fvg57jhzp6t ''
@bind_cap_awr sql_id [column]
no rows selected

   SNAP_ID INSTANCE_NUMBER SQL_ID        WAS LAST_CAPTURED       NAME       POSITION MAX_LENGTH DATATYPE_STRING VALUE_STRING
---------- --------------- ------------- --- ------------------- ---------- -------- ---------- --------------- ------------
     52727               1 24fvg57jhzp6t YES 2021-02-01 17:41:12 :SYS_B_1          2         32 VARCHAR2(32)    yyyy-mm
                         1                                       :SYS_B_2          3         32 VARCHAR2(32)    2021-01

     52888               1 24fvg57jhzp6t YES 2021-02-08 10:28:52 :SYS_B_1          2         32 VARCHAR2(32)    yyyy-mm
                         1                                       :SYS_B_2          3         32 VARCHAR2(32)    2021-01

     53297               1 24fvg57jhzp6t YES 2021-02-25 11:41:57 :SYS_B_1          2         32 VARCHAR2(32)    yyyy-mm
                         1                                       :SYS_B_2          3         32 VARCHAR2(32)    2021-01

     53559               1 24fvg57jhzp6t YES 2021-03-08 09:49:39 :SYS_B_1          2         32 VARCHAR2(32)    yyyy-mm
                         1                                       :SYS_B_2          3         32 VARCHAR2(32)    2021-02

     53563               1 24fvg57jhzp6t YES 2021-03-08 13:20:59 :SYS_B_1          2         32 VARCHAR2(32)    yyyy-mm
                         1                                       :SYS_B_2          3         32 VARCHAR2(32)    2021-02

     53568               1 24fvg57jhzp6t YES 2021-03-08 18:13:40 :SYS_B_1          2         32 VARCHAR2(32)    yyyy-mm
                         1                                       :SYS_B_2          3         32 VARCHAR2(32)    2021-02
12 rows selected.

--//很明显这个是做统计报表的语句,类似的语句1大堆。平时并怎么不执行,实际上面的索引都是存在的。
--//BJBC_MZZZRS_XH 是一个复杂视图。大量的业务时间段跑这样语句,硬件不好自然有点慢是正常的情况。

--//探究如何输入2021-02字符串转换为整月的日期。
SCOTT@book> @ ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

2.测试:
SCOTT@book> select to_date('2021-02','yyyy-mm') c1  from dual ;
C1
-------------------
2021-02-01 00:00:00

--//月头很好确定,月尾呢

SCOTT@book> select ADD_MONTHS(to_date('2021-02','yyyy-mm'),1) c1  from dual ;
C1
-------------------
2021-03-01 00:00:00

SCOTT@book> select ADD_MONTHS(to_date('2021-12','yyyy-mm'),1) c1  from dual ;
C1
-------------------
2022-01-01 00:00:00

--//不是很简单吗?真心不知道复杂在哪里,真心劝一些开发好好看书,不要这么随着性子写SQL语句。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2762467/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969561