Oracle数据库中插入日期型数据(to_date的用法)(转载)
往Oracle数据库中插入日期型数据(to_date的用法)
INSERT INTO FLOOR VALUES ( to_date ( '2007-12-20 18:31:34','YYYY-MM-DD HH24:MI:SS' ) ) ; 查询显示:2007-12-20 18:31:34.0 ------------------- INSERT INTO FLOOR VALUES ( to_date ( '2007-12-14 14:10','YYYY-MM-DD HH24:MI' ) ); 查询显示:2007-12-14 14:10:00.0 ------------------- INSERT INTO FLOOR VALUES ( to_date ( '2007-12-14 14','YYYY-MM-DD HH24' ) ); 查询显示:2007-12-14 14:00:00.0 ------------------- INSERT INTO FLOOR VALUES ( to_date ( '2007-11-15','YYYY-MM-DD' ) ); 查询显示:2007-11-15 00:00:00.0 ------------------- INSERT INTO FLOOR VALUES ( to_date ( '2007-09','YYYY-MM' ) ); 查询显示:2007-09-01 00:00:00.0 ------------------- INSERT INTO FLOOR VALUES ( to_date ( '2007','YYYY' ) ); 查询显示:2007-05-01 00:00:00.0 ------------------- 当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。 如果输入的日期数据忽略时间部分,Oracle会将时、分、秒部分都置为0,也就是说会取整到日。 同样,忽略了DD参数,Oracle会采用1作为日的默认值,也就是说会取整到月。 但是,不要被这种“惯性”所迷惑,如果忽略MM参数,Oracle并不会取整到年,而是取整到当前月
TO_DATE格式(以时间:2007-11-02 13:45:25为例)
Year: yy two digits 两位年 显示值:07 yyy three digits 三位年 显示值:007 yyyy four digits 四位年 显示值:2007 Month: mm number 两位月 显示值:11 mon abbreviated 字符集表示 显示值:11月,若是英文版,显示nov month spelled out 字符集表示 显示值:11月,显示november Day: dd number 当月第几天 显示值:02 ddd number 当年第几天 显示值:02 dy abbreviated 当周第几天简写 显示值:星期五,显示fri day spelled out 当周第几天全写 显示值:星期五,显示friday ddspth spelled out,ordinal twelfth Hour: hh two digits 12小时进制 显示值:01 hh24 two digits 24小时进制 显示值:13 Minute: mi two digits 60进制 显示值:45 Second: ss two digits 60进制 显示值:25 其它 Q digit 季度 显示值:4 WW digit 当年第几周 显示值:44 W digit 当月第几周 显示值:1 24小时格式下时间范围为: 0:00:00 - 23:59:59.... 12小时格式下时间范围为: 1:00:00 - 12:59:59 .... 1. 日期和字符转换函数用法(to_date,to_char) select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串 select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年 select to_char(sysdate,'mm') as nowMonth from dual; //获取时间的月 select to_char(sysdate,'dd') as nowDay from dual; //获取时间的日 select to_char(sysdate,'hh24') as nowHour from dual; //获取时间的时 select to_char(sysdate,'mi') as nowMinute from dual; //获取时间的分 select to_char(sysdate,'ss') as nowSecond from dual; //获取时间的秒
2. 3.求某天是星期几 4. 两个日期间的天数 5. 时间为null的用法 6.月份差 8. 9. 查找月份 11
14.处理月份天数不定的办法 16.找出今年的天数 闰年的处理方法 17.yyyy与rrrr的区别 18.不同时区的处理 19.5秒钟一个间隔 2002-11-1 9:55:00 35786 20.一年的第几天 21.计算小时,分,秒,毫秒
23.next_day函数 返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日 25,trunc[截断到最接近的日期,单位为天],返回的是日期类型 26,返回日期列表中最晚日期 27.计算时间差 28.更新时间 29.查找月的第一天,最后一天 |
INSERT INTO FLOOR VALUES ( to_date ( '2007-12-20 18:31:34','YYYY-MM-DD HH24:MI:SS' ) ) ;
查询显示:2007-12-20 18:31:34.0
-------------------
INSERT INTO FLOOR VALUES ( to_date ( '2007-12-14 14:10','YYYY' ) );
查询显示:2007-05-01 00:00:00.0
-------------------
当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。
如果输入的日期数据忽略时间部分,Oracle会将时、分、秒部分都置为0,也就是说会取整到日。
同样,忽略了DD参数,Oracle会采用1作为日的默认值,也就是说会取整到月。
但是,不要被这种“惯性”所迷惑,如果忽略MM参数,Oracle并不会取整到年,而是取整到当前月
Year:
yy two digits 两位年 显示值:07
yyy three digits 三位年 显示值:007
yyyy four digits 四位年 显示值:2007
Month:
mm number 两位月 显示值:11
mon abbreviated 字符集表示 显示值:11月,'ss') as nowSecond from dual; //获取时间的秒
select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual//
2.
select to_char( to_date(222,'Jsp') from dual
显示Two Hundred Twenty-Two
3.求某天是星期几
select to_char(to_date('2002-08-26','NLS_DATE_LANGUAGE = American')
4. 两个日期间的天数
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
5. 时间为null的用法
select id,TO_DATE(null) from dual;
注意要用TO_DATE(null)
6.月份差
a_date between to_date('20011201','yyyymmdd')
那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。
所以,当时间需要精确的时候,觉得to_char还是必要的
7. 日期格式冲突问题
输入的格式要看你安装的ORACLE字符集的类型,'NLS_DATE_LANGUAGE = American') from dual;
注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,
可查看
select * from nls_session_parameters
select * from V$NLS_PARAMETERS
8.
select count(*)
from ( select rownum-1 rnum
from all_objects
where rownum <= to_date('2002-02-28',而不是毫秒).
9. 查找月份
select months_between(to_date('01-31-1999',for format code D
11
select to_char(sysdate,'HH24')
-------------------- -----------------------
2003-10-13 19:35:21 19
13.年月日的处理
select older_date,rownum)+rownum newer_date
from emp
)
)
14.处理月份天数不定的办法
select to_char(add_months(last_day(sysdate) +1,last_day(sysdate) from dual
16.找出今年的天数
select add_months(trunc(sysdate,'year') from dual
闰年的处理方法
to_char( last_day( to_date('02' | | :year,'dd' )
如果是28就不是闰年
17.yyyy与rrrr的区别
'YYYY99 TO_C
------- ----
yyyy 99 0099
rrrr 99 1999
yyyy 01 0001
rrrr 01 2001
18.不同时区的处理
select to_char( NEW_TIME( sysdate,sysdate
from dual;
19.5秒钟一个间隔
Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')
from dual
2002-11-1 9:55:00 35786
SSSSS表示5位秒数
20.一年的第几天
select TO_CHAR(SYSDATE,sysdate from dual
310 2002-11-6 10:03:51
21.计算小时,
sysdate - trunc(sysdate) A
from dual
)
select * from tabname
order by decode(mode,30)作为日.
23.next_day函数 返回下个星期的日期,'day') DAY from dual
25,无时分秒
from dual
26,'10-2月-04') from dual
27.计算时间差
注:oracle时间差是以天数为单位,'yyyy-mm-dd hh24:mi:ss'))*24*60*60) as spanSeconds from dual //时间差-秒
28.更新时间
注:oracle时间加减是以天数为单位,'yyyy-mm-dd hh24:mi:ss') as newTime from dual //改变时间-秒
29.查找月的第一天,'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month
FROM dual;
· AlphaGo之父:AI能帮助人类在理解世界上取得巨大突破
· ID@Xbox发视频庆祝Win 10/Xbox One游戏数量已超500款
· 天猫发布首本AR图书 让纸质书动起来