在pl / sql怎么取得当前年月日,格式   2010-10-21,这个时间要放到查询条件里select * from users where REGDATE=当前日期怎么写当前时间向后减一天,pl / sql是什么函数
select * from users where REGDATE=当前日期-1天

解决方案 »

  1.   

    select * from users where REGDATE=sysdate-1;
      

  2.   


    取当前时间:select sysdate from dual;
    前一天:select sysdate-1 from dual;
    如果需要格式转换,可以用到to_char和to_date
      

  3.   

    --首先查看你的系统时间是什么格式
    select sysdate from dual;
    --1,如果是2010-10-21这样的格式且你的REGDATE是date类型的话就ok
    select * from users where REGDATE=sysdate;--2,如果不是2010-10-21这样的格式而你的REGDATE是date类型的话,那就先修改下session
    alter session set nls_date_format='yyyy-mm-dd';
    select * from users where REGDATE=sysdate;--3,如果不是2010-10-21这样的格式而你的REGDATE是varchar2类型的话
    select * from users where REGDATE=to_char(sysdate,'yyyy-mm-dd');
      

  4.   

    SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;
     
    TO_CHAR(SYSDATE,'YYYY-MM-DD')
    -----------------------------
    2010-10-22
     
    SQL> select to_char(sysdate-1,'yyyy-mm-dd') from dual;
     
    TO_CHAR(SYSDATE-1,'YYYY-MM-DD'
    ------------------------------
    2010-10-21
     
    SQL> 
      

  5.   

    下面是我以前整理的日期方面的函数和应用你慢慢看吧
    /*   一、 常用日期数据格式     */
    --1. Y 或 YY 或 YYY 年的最后一位,两位或三位。
    SELECT TO_CHAR(SYSDATE, 'Y') FROM DUAL;
    SELECT TO_CHAR(SYSDATE, 'YY') FROM DUAL;
    SELECT TO_CHAR(SYSDATE, 'YYY') FROM DUAL;--2. Q 季度1~3月为第一季度,2表示第二季度。
    SELECT TO_CHAR(SYSDATE, 'Q') FROM DUAL;--3. MM 月份数
    SELECT TO_CHAR(SYSDATE, 'MM') FROM DUAL;--4. RN 月份的罗马表示(X在罗马数字钟表示10)
    SELECT TO_CHAR(SYSDATE, 'RM') FROM DUAL;--5.Month 用9个字符长度表示的月份名
    SELECT TO_CHAR(SYSDATE, 'Month') FROM DUAL;--6. WW 当年第几周(2010年10月为2010年第42周)
    SELECT TO_CHAR(SYSDATE, 'WW') FROM DUAL;--7. W 本月第几周(2010年10月为2010年第3周)
    SELECT TO_CHAR(SYSDATE, 'W') FROM DUAL;--8. DDD 当年第几天(2010年10月20日为2010年第293天)
    SELECT TO_CHAR(SYSDATE, 'DDD') FROM DUAL;--9. DD 当月第几天(2010年10月20日为2010年10月第20天)
    SELECT TO_CHAR(SYSDATE, 'DD') FROM DUAL;--10. D 当周第几天(2010年10月20日为当周第4天)
    SELECT TO_CHAR(SYSDATE, 'D') FROM DUAL;--11. DY 中文(英文)星期几(2010年10月20日为当周WED)
    SELECT TO_CHAR(SYSDATE, 'DY') FROM DUAL;--12. HH 或 HH12 12进制小时数(16:28分为用12小时计时制计时为4点)
    SELECT TO_CHAR(SYSDATE, 'HH') FROM DUAL;--13. HH24 24小时制
    SELECT TO_CHAR(SYSDATE, 'HH24') FROM DUAL;--14. MI 分钟数(0~59)提示注意不要将MM格式用于分钟(分钟应该使用MI)。
    --MM是用于月份的格式,将它用于分钟也能工作,但结果是错误的。      
    SELECT TO_CHAR(SYSDATE, 'MI') FROM DUAL;--15. SS 秒数(0~59)
    SELECT TO_CHAR(SYSDATE, 'SS') FROM DUAL;/*   二、常用时间函数    */
    --1. TRUNC(SYSDATE,'Q')本季度第一天
    SELECT TRUNC(SYSDATE, 'Q') FROM DUAL;--2. TRUNC(SYSDATE,'D')本周第一天(周日)
    SELECT TRUNC(SYSDATE, 'D') FROM DUAL;--3. LAST_DAY(SYSDATE)本月最后一天
    SELECT LAST_DAY(SYSDATE) FROM DUAL;--4. ADD_MONTHS(SYSDATE,2) 日期sysdate 后推2个月
    SELECT ADD_MONTHS(SYSDATE, 2) FROM DUAL;--5. NEXT_DAY(SYSDATE,2) 日期sysdate之后的第一周中,第2(指定星期的第几天)是什么日期
    SELECT NEXT_DAY(SYSDATE, 2) FROM DUAL;--6. MONTHS_BETWEEN(F,S)日期F和S间相差月数
    SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('20100803', 'YYYYMMDD')) FROM DUAL;--7. 得到SYSDATE + 5 所在的月份
    SELECT TO_CHAR(SYSDATE + 5, 'MON', 'NLS_DATE_LANGUAGE=AMERICAN') FROM DUAL;--8. CURRENT_DATE() 返回当前会话时区中的当前日期。
     SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM DUAL;--9. DBTIMEZONE()返回时区
    SELECT DBTIMEZONE FROM DUAL;--10. EXTRACT()找出日期或间隔值的字段值
    SELECT EXTRACT(MONTH FROM SYSDATE) "This Month" FROM DUAL;
    SELECT EXTRACT(YEAR FROM SYSDATE) "This Year" FROM DUAL;
    SELECT EXTRACT(MONTH FROM ADD_MONTHS(SYSDATE, 2)) "Month" FROM DUAL;/*   三、一些实践后的用法     */
    --1. 上月末天:
    SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1), 'YYYY-MM-DD') LASTDAY
      FROM DUAL;--2. 上月今天
    SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'YYYY-MM-DD') PRETODAY FROM DUAL;--3. 上月首天
    SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE) + 1, -2), 'YYYY-MM-DD') PRETODAY
      FROM DUAL;--4. 要找到某月中所有周五的具体日期
    SELECT TO_CHAR(B.A, 'YY-MM-DD')
      FROM (SELECT TRUNC(SYSDATE, 'MM') + ROWNUM - 1 A
              FROM DBA_OBJECTS
             WHERE ROWNUM < 32) B
     WHERE TO_CHAR(B.A, 'DY') = 'FRI'
     
    --5. 得到系统当前月及以后的日期
    SELECT TRUNC(SYSDATE,'MM') + ROWNUM -1 FROM DBA_OBJECTS;
    --TO_DATE 字符串类型转为换日期类型字符串中的相应位置上的字符,必须符合时间范围的限制--6. localtimestamp()返回会话中的日期和时间
     SELECT LOCALTIMESTAMP FROM DUAL;--日期到字符操作
    SELECT SYSDATE, TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss') FROM DUAL;
    SELECT SYSDATE, TO_CHAR(SYSDATE, 'yyyy-mm-dd hh:mi:ss') FROM DUAL;
    SELECT SYSDATE, TO_CHAR(SYSDATE, 'yyyy-ddd hh:mi:ss') FROM DUAL;
    SELECT SYSDATE, TO_CHAR(SYSDATE, 'yyyy-mm iw-d hh:mi:ss') FROM DUAL;SELECT * FROM NLS_DATABASE_PARAMETERS;--设置日期语言
    ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';--也可以这样 
    SELECT TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = AMERICAN')  from dual;
    --设置系统时间
    ALTER SYSTEM SET fixed_date = '2010-10-20 17:29:07';
      

  6.   

     select to_char(sysdate,'yyyy-mm-dd') from dual;
    这里sysdate取出一个当前日期,然后用to_char()函数进行格式化格式,根据'yyyy-mm-dd'进行格式转换为2010-10-25