在pl / sql怎么取得当前年月日,格式 2010-10-21,这个时间要放到查询条件里select * from users where REGDATE=当前日期怎么写当前时间向后减一天,pl / sql是什么函数
select * from users where REGDATE=当前日期-1天
select * from users where REGDATE=当前日期-1天
解决方案 »
- 存储过程的问题
- ORACLE中怎样比较VARCHAR2数值
- sid和service_name
- 小弟刚学习oracle,为了加深学习,想要掉PL/SQL的资料,求各位帮帮忙!
- oracle 查询语句 ,居然要10几秒 ,不能忍受 ,求各位指点
- 大家来讨论下如何提升程序的操作数据库性能的问题!!!
- 如果让一个字段达到ACCESS的自动编号的效果,改如何处理?
- 怎样删除不是正常脱机的回滚段
- 用dblink查询数据,发现查询不了,是什么为题啊
- 查询机构及其各子机构的工单处理情况
- ORA-12154: TNS: 无法解析指定的连接标识符(Sql*plus WorkSheet)
- 关于sql语句(图表的显示)
取当前时间:select sysdate from dual;
前一天:select sysdate-1 from dual;
如果需要格式转换,可以用到to_char和to_date
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');
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>
/* 一、 常用日期数据格式 */
--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';
这里sysdate取出一个当前日期,然后用to_char()函数进行格式化格式,根据'yyyy-mm-dd'进行格式转换为2010-10-25