我要计算三天内过生日的信息 请问用SQL怎么实现
解决方案 »
- oracle 字符串的 一个小问题, 往友友们帮帮忙
- 模糊查询SQL,并取出指定位置的记录
- 存储过程中如何使用 kill session
- 函数调用错误:wrong number or types of arguments in call to 'ID_IS_GOOD'
- 我想把用友的数据库写一个程序导入到ACCESS中去,如何写??不够加分
- hp-ux11.31 下安装oracle10g,那么C/C++编译器是必须安装吗?
- [oracle高手救命]关于一个oracle客户端10g,访问2个异地oracle服务器,字符集不同的问题。
- 为什么找不到Oracle.DataAccesss.dll呢?
- pro*c的程序在大数据量时,常在执行EXEC SQL时出CORE,why???
- 求助:不能启动监听器,急!!!
- 帮忙!能不能实现
- 急寻数据库处理速度慢的解决办法...
加个条件
where birthday-sysdate<=3
如果生日字段包含年的话
where to_date(to_char(birthday,'mmdd'),'mmdd')-sysdate<=3
and TO_CHAR(birthday,'dd')>TO_CHAR(SYSDATE,'dd')
and TO_CHAR(birthday,'dd')<=TO_CHAR(SYSDATE+3,'dd')
--------------
10-9月 -09scott@ORCL10G>
scott@ORCL10G> SELECT * FROM emp WHERE TO_CHAR(hiredate,'mm')=TO_CHAR(SYSDATE,'mm'); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- -
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30scott@ORCL10G>
scott@ORCL10G> SELECT * FROM emp
2 WHERE TO_CHAR(hiredate,'mm')=TO_CHAR(SYSDATE,'mm')
3 AND TO_CHAR(hiredate,'dd')>TO_CHAR(SYSDATE,'dd')
4 AND TO_CHAR(hiredate,'dd')<=TO_CHAR(SYSDATE+17,'dd');未选定行scott@ORCL10G>
scott@ORCL10G>
scott@ORCL10G> SELECT * FROM emp
2 WHERE TO_CHAR(hiredate,'mm')=TO_CHAR(SYSDATE,'mm')
3 AND TO_CHAR(hiredate,'dd')>TO_CHAR(SYSDATE,'dd')
4 AND TO_CHAR(hiredate,'dd')<=TO_CHAR(SYSDATE+18,'dd'); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- -
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
WHERE TO_CHAR(hiredate,'mm')=TO_CHAR(SYSDATE,'mm')
AND TO_CHAR(hiredate,'dd')>TO_CHAR(SYSDATE,'dd')
AND TO_CHAR(hiredate,'dd')<=TO_CHAR(SYSDATE+18,'dd');
-- 方法二:
WHERE TO_CHAR(hiredate,'mmdd') BETWEEN TO_CHAR(SYSDATE,'mmdd')+1 AND TO_CHAR(SYSDATE,'mmdd')+3;
---正确方法一:
WHERE TO_CHAR(birthday,'yyyy-mm-dd') BETWEEN TO_CHAR(birthday,'yyyy-')||TO_CHAR(SYSDATE+1,'mm-dd')
AND TO_CHAR(birthday,'yyyy-')||TO_CHAR(SYSDATE+3,'mm-dd');---正确方法二:
WHERE TO_CHAR(SYSDATE,'yyyy-')||TO_CHAR(birthday,'mm-dd') BETWEEN TO_CHAR(SYSDATE+1,'yyyy-mm-dd')
AND TO_CHAR(SYSDATE+3,'yyyy-mm-dd');
---正确方法一(简洁版):
WHERE TO_CHAR(birthday,'mm-dd') BETWEEN TO_CHAR(SYSDATE+1,'mm-dd')
AND TO_CHAR(SYSDATE+3,'mm-dd');---正确方法二:
WHERE TO_CHAR(birthday,'mm-dd') BETWEEN TO_CHAR(SYSDATE+1,'mm-dd')
AND TO_CHAR(SYSDATE+3,'mm-dd');