zoukankan      html  css  js  c++  java
  • oracle中next_day()、last_day()函数解析

    oracle中next_day()函数解析

    Sql代码 

    当前系统时间的下一星期一的时间select   next_day(sysdate,1) from dual   

    NEXT_DAY(date,char) 

    date参数为日期型, 

    char:为1~7或Monday/Mon~Sunday/ 

    指定时间的下一个星期几(由char指定)所在的日期, 

    char也可用1~7替代,1表示星期日,2代表星期一等 

    还可以是星期一、星期二...、星期日 

    Sql代码  

    select next_day(sysdate,'星期日') from dual;   --返回当前日期的星期日的日期和时间

    Sql代码  

    SQL>   select   NEXT_DAY(sysdate,   'MONDAY ')   FROM   DUAL;  

    select   NEXT_DAY(sysdate,   'MONDAY ')   FROM   DUAL  

    ORA-01846:   周中的日无效  

      这种情况是由于数据库语言是中文造成的。

    show parameter nls_date_language;

    如果返回的是simplified chinese,表示中文,中文是用“星期一”这种表示的。要想用monday,tuesday这种英文表达,需要改写实例参数nls_date_language.

    SQL>   alter   session   set   NLS_DATE_LANGUAGE   =   American;  

    Session   altered  

    show parameter nls_date_language;

    SQL> select   NEXT_DAY(sysdate,   'MONDAY ')   FROM   DUAL;  

    SQL> select   NEXT_DAY(sysdate,'MON')   FROM   DUAL;   

    上面两处查出来的日期是一样的,日期+当前系统时间 就差时分秒不同而已

    oracle中last_day()函数解析

    last_day(某个日期) 返回特定日期所在月份的最后一天

    select last_day(sysdate) from dual;---返回当前日期所在月份的最后一天的当前时间

    例如:找出每个月倒数第三天入职的员工

    SELECT * FROM EMP WHERE hiredate=last_day(hiredate)-2;

    解释:hiredate表示雇员入职日期,last_day(hiredate)得到的是每个员工入职当有的最后一天,

               -2表示倒数第三天,如果与员工入职时间相等,说明这个员工是当月倒数第三天入职的

  • 相关阅读:
    1052 Linked List Sorting (25 分)
    1051 Pop Sequence (25 分)
    1050 String Subtraction (20 分)
    1049 Counting Ones (30 分)
    1048 Find Coins (25 分)
    1047 Student List for Course (25 分)
    1046 Shortest Distance (20 分)
    1045 Favorite Color Stripe (30 分)
    1044 Shopping in Mars (25 分)
    1055 The World's Richest (25 分)
  • 原文地址:https://www.cnblogs.com/ray-bk/p/10239119.html
Copyright © 2011-2022 走看看