时间加减

绝世美人儿
862次浏览
2021年01月29日 01:41
最佳经验
本文由作者推荐

生产技术部-病假条格式

2021年1月29日发(作者:北京导游)
Oracle
中的

TO_DATE


TO_CHAR
函数

Oracle
中的

TO_DATE


TO_CHAR
函数

oracle


TO_DATE

函数的时间格式,以
2008-09-10 23:45:56
为例

格式

说明

显示值

备注


Year(

):
yy two digits(
两位年
) 08


yyy
three digits(
三位年
) 008


yyyy four digits(
四位年
) 2008



Month(

):
mm number(
两位月
) 09


mon abbreviated(
字符集表示
) 9


若是英文版
,
则显示
sep
month spelled out(
字符集表示
) 9


若是英文版
,
则显示
september

Day(

):
dd number(
当月第几天
) 10


ddd number(
当年第几天
) 254


dy abbreviated(
当周第几天简写
)
星期三

若是英文版
,
则显示
wed
day spelled out(
当周第几天全写
)
星期三

若是英文版
,
则显示
wednesday
ddspth spelled out, ordinal twelfth tenth



Hour(

):
hh two digits(12
小时进制
) 11


hh24 two digits(24
小时进制
) 23



Minute(

):
mi two digits(60
进制
) 45



Second(

):
ss two digits(60
进制
) 56



其他
:
Q digit(
季度
) 3


WW digit(
当年第几周
) 37


W digit(
当月第几周
) 2


说明:

12
小时格式下时间范围为:
1:00:00 - 12:59:59(12
小时制下的
12:59:59


24
小时制下的
00:59:59)
24
小时格式下时间范围为:
0:00:00 - 23: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;

//
获取时间的


select
to_date
('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')

from
dual//

2. select to_char(
to_date
(222,'J'),'Jsp') from dual




显示
Two Hundred Twenty-Two

3.
求某天是星期几



select to_char(
to_date
('2002-08-26','yyyy-mm- dd'),'day') from
dual;




星期一



select
to_char(
to_date
('2002-08-26','yyyy-mm- dd'),'day','NLS_DATE_LANGUAGE =
American') from dual;



monday




设置日期语言



ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';




也可以这样




TO_DATE
('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE =
American')

4.
两个日期间的天数



select floor(sysdate -
to_date
('20020405','yyyymmdd')) from
dual;

5.
时间为
null
的用法



select id, active_date from table1



UNION



select 1,
TO_DATE
(null) from dual;





注意要用
TO_DATE
(null)

6.
月份差


a_date between
to_date
('20011201','yyyymmdd') and
to_date
('20011231','yyyymmdd')




那么
12

31
号中午
12
点之后和
12

1
号的
12
点之前是不包含在这个范围< br>之内的。




所以,当时间需要精确的时候,觉得
to_char
还是必要的



7.
日期格式冲突问题




输入的格式要看你安装的
ORACLE
字符集的类型
,
比如
: US7ASCII, date

式的类型就是
: '01-Jan-01'



alter system set NLS_DATE_LANGUAGE = American



alter session set NLS_DATE_LANGUAGE = American




或者在
to_date
中写



select
to_char(
to_date
('2002-08-26','yyyy-mm- dd'),'day','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','yyyy-mm-dd') -
to_date
('2002-



02-01','yyyy-mm-dd')+1



)



where
to_char(
to_date
('2002-02-01','yyyy-mm-dd')+rnum-1,
'D'
)



not in ( '1', '7' )





查找2002-02-28

2002-02-01
间除星期一和七的天数




在前后分别调用
DBMS__TIME,
让后将结果相减
(
得到的是
1/100

,
而不是毫秒
).

9.
查找月份



select
months_between(
to_date< br>('01-31-1999','MM-DD- YYYY'),
to_date
('12-31-1998
','MM-DD- YYYY')) "MONTHS" FROM DUAL;



1



select
m onths_between(
to_date
('02-01-1999','MM-DD- YYYY'),
to_date
('12-31-1998
','MM-DD- YYYY')) "MONTHS" FROM DUAL;



1.13


10. Next_day
的用法



Next_day(date, day)





Monday-Sunday, for format code DAY



Mon-Sun, for format code DY



1-7, for format code D

11



select to_char(sysdate,'hh:mi:ss') TIME from all_objects




注意:第一条记录的
TIME
与最后一行是一样的




可以建立一个函数来处理这个问题



create or replace function sys_date return date is



begin



return sysdate;



end;




select to_char(sys_date,'hh:mi:ss') from all_objects;


12.
获得小时数



extract()
找出日期或间隔值的字段值


SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from
offer



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





SYSDATE TO_CHAR(SYSDATE,'HH')



-------------------- ---------------------



2003-10-13 19:35:21 07





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





SYSDATE TO_CHAR(SYSDATE,'HH24')



-------------------- -----------------------



2003-10-13 19:35:21 19



13.
年月日的处理



select older_date,



newer_date,



years,



months,

生产技术部-病假条格式


生产技术部-病假条格式


生产技术部-病假条格式


生产技术部-病假条格式


生产技术部-病假条格式


生产技术部-病假条格式


生产技术部-病假条格式


生产技术部-病假条格式