获取当前日期两个月后的日期
select add_months(sysdate,2) from dual
获取当前日期20天后的日期
select sysdate+20 from dual
select to_char(sysdate,'dy') from dual; --返回当前日期星期几
select to_char(sysdate,'ww') from dual; --返回当前日期是第几周
SELECT TO_CHAR(SYSDATE,'DAY') FROM dual;----一周中的星期几
select to_char(add_months(sysdate,-1),'day') from dual;--上一个月同一天星期几
select to_char(add_months(sysdate,1),'day') from dual;--下一个月同一天星期几
select to_char(last_day(add_months(sysdate,-1)),'day') from dual;--上一个月最后一天星期几
select to_char(last_day(add_months(sysdate,-2))+1,'day') from dual;--上一个月第一天星期几
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
EXISTS 指定一个子查询,检测 行 的存在。
比较使用 EXISTS 和 = ANY 的查询。注意两个查询返回相同的结果。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
select * from TableIn where ANAME=ANY(select BNAME from TableEx)
any与all函数的区别
any表示任意一个,all表示所有的。 如果有张学生记录表student中有一个属性组为age 现在要查找年龄在某个区间上的学生记录就有如下操作 1、查找年龄比15、16、22、21、17、18、19中任意一个都小的学生记录就有如下代码: select * from student where age<any(15,16,22,21,17,18,19) 2、查找年龄比15、16、22、21、17、18、19中任意一个都大的学生记录就有如下代码: select * from student where age>any(15,16,22,21,17,18,19) /*这里用any 和all是等效的*/用all是大于所有的意思 用all就改为: where age>all(15,16,22,21,17,18,19) 这里<any就是iname小于括号内部那个子查询所的结果中的任意一个值,也就是说小于其中最小的一个。