11.dual:虚表,任何用户都可以使用,表结构如下:

SQL> desc dual
Name Null? Type
----------------------------------------- -------- ----------------------------
DUMMY VARCHAR2()

12.dual的作用:

1. 查询数据库系统日期

2. 进行四则运算

SQL> select sysdate from dual;  ---这里查询数据库系统日期

SYSDATE
---------
-AUG-
SQL> select * from dual; ---这里进行四则运算 *
---------- SQL> select 'abc' from dual; ---这里进行字符串的输出 'AB
---
abc

13.日期的格式:

默认的格式:DD-MON-RR

如何改变日期的格式:nls_date_format

SQL> alter session set nls_date_format='yyyy--mm--dd hh24:mi:ss';   ---修改日期格式

Session altered.

SQL> select sysdate from dual;

SYSDATE
---------------------
---- ::

14.日期的计算

两个日期相减得到是天数:

SQL> select sysdate,hiredate,sysdate-hiredate from emp;

SYSDATE             HIREDATE            SYSDATE-HIREDATE
------------------- ------------------- ----------------
-- :: -- :: 12294.3832
-- :: -- :: 12229.3832
-- :: -- :: 12227.3832
-- :: -- :: 12188.3832
-- :: -- :: 12009.3832
-- :: -- :: 12159.3832
-- :: -- :: 12120.3832
-- :: -- :: 9980.38319
-- :: -- :: 11959.3832
-- :: -- :: 12029.3832
-- :: -- :: 9946.38319
-- :: -- :: 11943.3832
-- :: -- :: 11943.3832
-- :: -- :: 11892.3832

计算周数只需要除以7即可

SQL> select sysdate,hiredate,sysdate-hiredate from emp;

SYSDATE             HIREDATE            SYSDATE-HIREDATE
------------------- ------------------- ----------------
-- :: -- :: 12294.3832
-- :: -- :: 12229.3832
-- :: -- :: 12227.3832
-- :: -- :: 12188.3832
-- :: -- :: 12009.3832
-- :: -- :: 12159.3832
-- :: -- :: 12120.3832
-- :: -- :: 9980.38319
-- :: -- :: 11959.3832
-- :: -- :: 12029.3832
-- :: -- :: 9946.38319
-- :: -- :: 11943.3832
-- :: -- :: 11943.3832
-- :: -- :: 11892.3832

给日期减去1,效果作用在天上

SQL> select hiredate,hiredate- from emp;

HIREDATE          HIREDATE-
--------------------- ---------------------
---- :: ---- ::
---- :: ---- ::
---- :: ---- ::
---- :: ---- ::
---- :: ---- ::
---- :: ---- ::

减少一小时,增加也是一样:

SQL> select sysdate,sysdate-/() from dual;

SYSDATE           SYSDATE-/()
--------------------- ---------------------
---- :: ---- ::

增加一分钟:

SQL> select sysdate ,sysdate+/(*) from dual;

SYSDATE           SYSDATE+/(*)
--------------------- ---------------------
---- :: ---- ::

增加一秒钟:

SQL> select sysdate,sysdate+/(**) from dual;

SYSDATE             SYSDATE+/(**
------------------- -------------------
-- :: -- ::

15.日期函数

MONTHS_BETWEEN:两个日期之间的月数

SQL> select hiredate,sysdate,months_between(sysdate,hiredate) from emp;

HIREDATE            SYSDATE             MONTHS_BETWEEN(SYSDATE,HIREDATE)
------------------- ------------------- --------------------------------
-- :: -- :: 403.947992
-- :: -- :: 401.851218
-- :: -- :: 401.786701
-- :: -- :: 400.431863
-- :: -- :: 394.593153
-- :: -- :: 399.464121
-- :: -- :: 398.206056
-- :: -- :: 327.883476

ADD_MONTHS:为一个日期增加月份:

SQL> select sysdate,add_months(sysdate,) from dual;

SYSDATE           ADD_MONTHS(SYSDATE,)
--------------------- ---------------------
---- :: ---- ::

NEXT_DAY:一个日期的下一个指定日子(例如:星期五)的日期

SQL> select sysdate ,next_day(sysdate,'friday') next_day from dual;

SYSDATE           NEXT_DAY
--------------------- ---------------------
---- :: ---- ::

LAST_DAY:某个月份的最后一天

SQL> select sysdate ,last_day(sysdate) from dual;

SYSDATE           LAST_DAY(SYSDATE)
--------------------- ---------------------
---- :: ---- ::

对日期进行截取:

ROUND:要进行四舍五入

TRUNC:不进行四舍五入

SQL> select sysdate,round(sysdate) round,trunc(sysdate) trunc from dual;

SYSDATE                    ROUND                   TRUNC
--------------------- --------------------- --------------------
2014--08--15 15:21:58 2014--08--16 00:00:00 2014--08--15 00:00:00

16. 转换函数

数据类型转换方式:

1. 隐士转换,也叫自动转换

2. 显示转换,通过转换函数进行转换

TO_CHAR函数:可以把数字和日期转换为字符

TO_CHAR(date, 'format_model'):将日期转换为字符  format_model是:日期的格式

SQL> select sysdate,to_char(sysdate,'mm-dd-yyyy hh24:mi:ss') from dual;

SYSDATE           TO_CHAR(SYSDATE,'MM
--------------------- ------------------- ---按照日期格式将格式转换后输出
---- :: -- ::

Format_model:

1、日期格式必须用单引号括起来,并且是大小写敏感的

2、日期格式必须是可用的

3、前面加上 fm字符以压缩掉开始和结束的空格或者前置的零

4、同日期值用逗号隔开

SQL> select sysdate,to_char(sysdate,'YYYY') from dual;

SYSDATE           TO_C
--------------------- ----
---- ::

验证:日期格式必须用单引号括起来,并且是大小写敏感的

SQL> select sysdate,to_char(sysdate,'YEAR') from dual;

SYSDATE           TO_CHAR(SYSDATE,'YEAR')
--------------------- ------------------------------------------
---- :: TWENTY FOURTEEN SQL> select sysdate ,to_char(sysdate,'year') from dual; SYSDATE TO_CHAR(SYSDATE,'YEAR')
--------------------- ------------------------------------------
---- :: twenty fourteen

验证:简写和祥写的不同 ---日期元素区分大小写

SQL> select sysdate,to_char(sysdate,'mm'),to_char(sysdate,'month') from dual;

SYSDATE           TO TO_CHAR(SYSDATE,'MONTH')
--------------------- -- ---------------------------
---- :: august SQL> select sysdate,to_char(sysdate,'dy'),to_char(sysdate,'day') from dual; SYSDATE TO_CHAR(S TO_CHAR(SYSDATE,'DAY')
--------------------- --------- ---------------------------
---- :: fri friday SQL> select sysdate,to_char(sysdate,'DY'),to_char(sysdate,'DAY') from dual; SYSDATE TO_CHAR(S TO_CHAR(SYSDATE,'DAY')
--------------------- --------- ---------------------------
---- :: FRI FRIDAY

日期中时间部分的格式:

SQL> select sysdate,to_char(sysdate,'yyyy/mm/dd hh24:mi:ss pm')  time from dual;

SYSDATE           TIME
--------------------- ----------------------
---- :: // :: pm

增加字符串需要用双引号将字符串括起来:

SQL> select sysdate,to_char(sysdate,'day "of" month') string from dual;

SYSDATE             STRING
------------------- ---------------------------------------------
-- :: friday of august

fm:去掉日期元素前置的零和空格

SQL> select sysdate,to_char(sysdate,'fmyyyy-mm-dd hh24:mi:ss am') 去掉空格 from dual;

SYSDATE                去掉空格
--------------------- ----------------------
---- :: -- :: pm ---08前面的0被去掉了

在一个数字前面显示$符号 ---$不管在9999.99的前面还是后面,结果显示都是在9999.99的前面。

SQL> select ename,sal,to_char(sal,'9999.99$') from emp;

ENAME    SAL TO_CHAR(S
------ ----- ---------
SMITH $800.00
ALLEN $1600.00
WARD $1250.00
JONES $2975.00
MARTIN $1250.00
BLAKE $2850.00
CLARK $2450.00
SCOTT $4000.00
KING $5000.00
TURNER $1500.00
ADAMS $1100.00
JAMES $950.00
FORD $3000.00
MILLER $1300.00

如果9999.99变成了999.99,大于1000的数字则会显示乱码。

SQL> select ename,to_char(sal,'999.99') from emp;

ENAME      TO_CHAR
---------- -------
SMITH 800.00
ALLEN #######
WARD #######
JONES #######
MARTIN #######
BLAKE #######
CLARK #######
SCOTT #######
KING #######

最新文章

  1. tomcat开发远程调试端口以及利用eclipse进行远程调试
  2. Android的Kotlin秘方(II):RecyclerView 和 DiffUtil
  3. Linux下编译安装Vim8.0
  4. QA is more than Testing
  5. Asp.Net WebService 使用后来管理系统对接口方法进行公开控制
  6. EntityFramework 启用迁移 Enable-Migrations 报异常 "No context type was found in the assembly"
  7. SQL获取第一次出现指定字符前的内容
  8. WCF使用小结:(1)WCF接收HTTP POST数据的处理方法
  9. 重新想象 Windows 8 Store Apps 系列文章索引
  10. mysql性能调优与架构设计(一)商业需求与系统架构对性能的影响
  11. ajax提交表单 验证
  12. EF Core 2.0 新特性
  13. Java ClassLoader 原理分析
  14. BZOJ3065(替罪羊树套线段树)
  15. miui 系统铃声
  16. Java & C# BCD编码与十进制转换
  17. 修改element表格组件的样式
  18. 学习angularjs的内置API函数
  19. silverlight导出图片文件
  20. C++设计模式 ==> 策略模式与简单工厂模式结合

热门文章

  1. java下socket传图片
  2. uCgui和emWin的区别
  3. osg复制多个相同物体修改材质属性问题
  4. swt
  5. MySQL 忘记密码后的重置操作
  6. css 画竖着线条
  7. AFNetworking 2.0 新特性讲解之AFHTTPSessionManager
  8. While reading XXX pngcrush caught libpng error: N
  9. IComparer<T> 接口Linq比较接口
  10. 解决MVC项目中,静态html 未找到时候,404的跳转