在进行日期限定的比对时,可能会用到这个场景。
比如查找 某个日期栏位 大于"2013/12/12" 的所有数据。
"2013/12/12" 这是一个字符串, 要和日期比对,就要转换了。
1. 将字串转化为日期--使用 TO_DATE 函数
select TO_DATE('20131212','YYYYMMDD') from DUAL;
返回: 12-12月-13 (和本地安装oracle 的日期格式有关)
2. 将日期转化为字串-- TO_CHAR
select to_char(sysdate,'yyyy/mm/dd') from DUAL;
返回: 2013/12/12
以yyyy/mm/dd 显示当前日期。
sysdate 是当前日期。
可以使用 ww 或是 iw 来获取星期。比如:
select to_char(sysdate,'yyyy/ww') from DUAL;返回: 2013/50
ww 和 iw 的区别是:
1. ww
这是 Oracle 计算星期的标准。 每年的 1 月1号作为这一年的第一天。(不管这一天是星期几)
比如: 2013/01/01 是星期二, 这一天作为2013年的第一天。
2. iw
这是ISO的标准。
星期一至星期日算一周,且每年的第一个星期一为第一周,select to_char(TO_DATE('2013/12/01','yyyy/mm/dd'),'yyyy/iw') from DUAL;
返回: 48
注意: 如果按每周从周日开始的话, 就要在日期上加 1 天了
select to_char(TO_DATE('2013/12/01','yyyy/mm/dd')+1,'yyyy/iw') from DUAL;返回 49 了。
==》 特别注意, 以上的获取周数的方法当遇到跨年的时候, 会出现问题。
细部参见: