日期函数;
如果要想处理任何日期 那么都有一个基本的前提 必须知道当前的日期的是什么
select sysdate from dual;获取当前日期时间
select systimestamp from dual;获取当前日期时间戳
进一步观察伪列:
所谓伪列就是 当不查询的时候不存在于表中 然而当查询的时候可以加上表中并显示出来.
SYSDATE伪列里面包含有日期时间的内容 只不过现在只显示了日期数据
日期操作函数:
日期:ADD_MONTHS(列|日期,月数) 在指定的日期上增加月份 只要日期别太大就行.
数字MONTHS_BETWEEN(列|日期,列|日期)之间的月数 注意:前面的日期是最近的日期 后面的日期是老的日期 否者会出现负数
日期LAST_DAY(列|日期,列|日期) 取得指定日期所在月的最后一天
日期NEXT_DAY(列|日期,星期X) 返回下一个指定的一个日期
日期函数的综合运用:
要求就是按 年 月 天 的方式 输出emp表雇佣的员工工作年限。
处理上(年 月)好处理 天数不好处理
select empno,ename,hiredate,
TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) year,
TRUNC(MOD(MONTHS_BETWEEN(SYSDATE,hiredate),12))months,
TRUNC(SYSDATE-ADD_MONTHS(hiredate,MONTHS_BETWEEN(SYSDATE,hiredate)))date;
FROM emp;
转换函数:
字符串TO_CHAR(列|日期|数字,转换格式) 将日期或数字格式化为指定结构的字符串
日期TO_DATE(列|字符串,转换格式) 按照指定的转换格式编写字符串后将其变为日期型数据
数字TO_NUMBER(列|字符串)将字符串变为数字
1TO_CHAR()函数
如果要想将一个日期或数字变为字符串 那么首先必须清楚转换格式
.日期:年(yyyy),月(mm),日(dd);
.时间:时(hh,hh24),分(mi),秒(ss);
.数字:任意数字(9),本地货币符号(L).
范例:将日期显示格式化
select TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM dual;
在之前一直强调SYSDATE里面会包含有日期和时间两类内容
范例:格式化日期时间
select TO_CHAR(SYSDATE,'yyyy-mm-dd hh:mi:ss')FROM dual;
select TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss')FROM dual;//显示24小时制的日期
转换字符串函数还要一个强悍的功能可以实现日期数据的拆分.
select TO_CHAR(SYSDATE,'yyyy'),TO_CHAR(SYSDATE,'mm'),TO_CHAR(SYSDATE,''dd) FROM dual;
//字符串拆分应用的地方
实现日期数据的拆分 查询在所有二月份雇佣的雇员
SELECT*from emp where TO_CHAR(hiredate,'mm')='02';
SELECT*from emp where TO_CHAR(hiredate,'mm')=02;
以上都能使用ORACLE都有类型转换.
2转日期函数
在之前发现如果想要编写一个日期型数据 那么需要按照指定的字符串转型 在Oracle中有自动转型
但是除了自动转型之外 也可以采用手工的方式转型
范例:将字符串变为日期
select TO_DATE('1889-10-19','yyyy-mm-dd')FROM dual;
3转数字函数
TO_NUMBER()可以将一个字符串变为数字操作。
select TO_NUMBER('1')+ TO_NUMBER('2')FROM dual;
select'1'+'2' FROM dual;
以上两个语句的效果是一样的.
ORACLE里面已经默认提供了许多的自动转换机制 所以针对于转换函数 唯一重要的也就在于TO_CHAR()
通用函数
通用函数一般都是指的是Oracle特色函数 主要有两个通用函数
1 数字NVL(列|NULL,默认值) 描述:如果传入的内容是null则使用默认数值处理 如果不是空则使用原始数值处理
2 数据类型DECODE(列 | 字符串 |数值,比较内容1 ,显示内容1,比较内容2,显示内容2,...[,默认显示内容])
描述:设置的内容会与每一个比较内容进行比较 如果内容相同 则会使用显示内容进行输出 如果不相同 则用最后的显示
1处理null函数
要求查询出每个雇员的编号
当查询的时候有null的时候 可能查询结果出现和预期不一样的结果 此时用NVL函数可以解决这个问题 可以把null值当做 0对待
2 decode函数()类似于程序的if...else感觉 但是与if...else不同的是
范例:将所有的职位信息替换为中文显示
select ename,job,DECODE(job,'CLERK','办事员'..) FROM emp ;在一些笔试中decode函数还是被经常问到的
总结:
1 每一个函数都只是完成一个独立的功能 并且所有的函数都可以在sql语句完成功能
2 要求可以记下每一个函数的函数名称以及作用 这样在编写代码的时候就可以方便很多
如果要想处理任何日期 那么都有一个基本的前提 必须知道当前的日期的是什么
select sysdate from dual;获取当前日期时间
select systimestamp from dual;获取当前日期时间戳
进一步观察伪列:
所谓伪列就是 当不查询的时候不存在于表中 然而当查询的时候可以加上表中并显示出来.
SYSDATE伪列里面包含有日期时间的内容 只不过现在只显示了日期数据
日期操作函数:
日期:ADD_MONTHS(列|日期,月数) 在指定的日期上增加月份 只要日期别太大就行.
数字MONTHS_BETWEEN(列|日期,列|日期)之间的月数 注意:前面的日期是最近的日期 后面的日期是老的日期 否者会出现负数
日期LAST_DAY(列|日期,列|日期) 取得指定日期所在月的最后一天
日期NEXT_DAY(列|日期,星期X) 返回下一个指定的一个日期
日期函数的综合运用:
要求就是按 年 月 天 的方式 输出emp表雇佣的员工工作年限。
处理上(年 月)好处理 天数不好处理
select empno,ename,hiredate,
TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) year,
TRUNC(MOD(MONTHS_BETWEEN(SYSDATE,hiredate),12))months,
TRUNC(SYSDATE-ADD_MONTHS(hiredate,MONTHS_BETWEEN(SYSDATE,hiredate)))date;
FROM emp;
转换函数:
字符串TO_CHAR(列|日期|数字,转换格式) 将日期或数字格式化为指定结构的字符串
日期TO_DATE(列|字符串,转换格式) 按照指定的转换格式编写字符串后将其变为日期型数据
数字TO_NUMBER(列|字符串)将字符串变为数字
1TO_CHAR()函数
如果要想将一个日期或数字变为字符串 那么首先必须清楚转换格式
.日期:年(yyyy),月(mm),日(dd);
.时间:时(hh,hh24),分(mi),秒(ss);
.数字:任意数字(9),本地货币符号(L).
范例:将日期显示格式化
select TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM dual;
在之前一直强调SYSDATE里面会包含有日期和时间两类内容
范例:格式化日期时间
select TO_CHAR(SYSDATE,'yyyy-mm-dd hh:mi:ss')FROM dual;
select TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss')FROM dual;//显示24小时制的日期
转换字符串函数还要一个强悍的功能可以实现日期数据的拆分.
select TO_CHAR(SYSDATE,'yyyy'),TO_CHAR(SYSDATE,'mm'),TO_CHAR(SYSDATE,''dd) FROM dual;
//字符串拆分应用的地方
实现日期数据的拆分 查询在所有二月份雇佣的雇员
SELECT*from emp where TO_CHAR(hiredate,'mm')='02';
SELECT*from emp where TO_CHAR(hiredate,'mm')=02;
以上都能使用ORACLE都有类型转换.
2转日期函数
在之前发现如果想要编写一个日期型数据 那么需要按照指定的字符串转型 在Oracle中有自动转型
但是除了自动转型之外 也可以采用手工的方式转型
范例:将字符串变为日期
select TO_DATE('1889-10-19','yyyy-mm-dd')FROM dual;
3转数字函数
TO_NUMBER()可以将一个字符串变为数字操作。
select TO_NUMBER('1')+ TO_NUMBER('2')FROM dual;
select'1'+'2' FROM dual;
以上两个语句的效果是一样的.
ORACLE里面已经默认提供了许多的自动转换机制 所以针对于转换函数 唯一重要的也就在于TO_CHAR()
通用函数
通用函数一般都是指的是Oracle特色函数 主要有两个通用函数
1 数字NVL(列|NULL,默认值) 描述:如果传入的内容是null则使用默认数值处理 如果不是空则使用原始数值处理
2 数据类型DECODE(列 | 字符串 |数值,比较内容1 ,显示内容1,比较内容2,显示内容2,...[,默认显示内容])
描述:设置的内容会与每一个比较内容进行比较 如果内容相同 则会使用显示内容进行输出 如果不相同 则用最后的显示
1处理null函数
要求查询出每个雇员的编号
当查询的时候有null的时候 可能查询结果出现和预期不一样的结果 此时用NVL函数可以解决这个问题 可以把null值当做 0对待
2 decode函数()类似于程序的if...else感觉 但是与if...else不同的是
范例:将所有的职位信息替换为中文显示
select ename,job,DECODE(job,'CLERK','办事员'..) FROM emp ;在一些笔试中decode函数还是被经常问到的
总结:
1 每一个函数都只是完成一个独立的功能 并且所有的函数都可以在sql语句完成功能
2 要求可以记下每一个函数的函数名称以及作用 这样在编写代码的时候就可以方便很多