首页 > 编程 > .NET > 正文

Oracle中TO_DATE格式介绍

2024-07-10 12:41:16
字体:
来源:转载
供稿:网友

TO_DATE格式(以时间:2007-11-0213:45:25为例)

Year:
yytwodigits两位年显示值:07
yyythreedigits三位年显示值:007
yyyyfourdigits四位年显示值:2007

Month:
mmnumber两位月显示值:11
monabbreviated字符集表示显示值:11月,若是英文版,显示nov
monthspelledout字符集表示显示值:11月,若是英文版,显示november

Day:
ddnumber当月第几天显示值:02
dddnumber当年第几天显示值:02
dyabbreviated当周第几天简写显示值:星期五,若是英文版,显示fri
dayspelledout当周第几天全写显示值:星期五,若是英文版,显示friday
ddspthspelledout,ordinaltwelfth

Hour:
hhtwodigits12小时进制显示值:01
hh24twodigits24小时进制显示值:13

Minute:
mitwodigits60进制显示值:45

Second:
sstwodigits60进制显示值:25

其它
Qdigit季度显示值:4
WWdigit当年第几周显示值:44
Wdigit当月第几周显示值:1

24小时格式下时间范围为:0:00:00-23:59:59....
12小时格式下时间范围为:1:00:00-12:59:59....

1.日期和字符转换函数用法(to_date,to_char)

selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')asnowTimefromdual;//日期转化为字符串
selectto_char(sysdate,'yyyy')asnowYearfromdual;//获取时间的年
selectto_char(sysdate,'mm')asnowMonthfromdual;//获取时间的月
selectto_char(sysdate,'dd')asnowDayfromdual;//获取时间的日
selectto_char(sysdate,'hh24')asnowHourfromdual;//获取时间的时
selectto_char(sysdate,'mi')asnowMinutefromdual;//获取时间的分
selectto_char(sysdate,'ss')asnowSecondfromdual;//获取时间的秒
selectto_date('2004-05-0713:23:44','yyyy-mm-ddhh24:mi:ss')fromdual//
2.
selectto_char(to_date(222,'J'),'Jsp')fromdual

显示TwoHundredTwenty-Two
3.求某天是星期几
selectto_char(to_date('2002-08-26','yyyy-mm-dd'),'day')fromdual;
星期一
selectto_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE=American')fromdual;
monday
设置日期语言
ALTERSESSIONSETNLS_DATE_LANGUAGE='AMERICAN';
也可以这样
TO_DATE('2002-08-26','YYYY-mm-dd','NLS_DATE_LANGUAGE=American')

4.两个日期间的天数
selectfloor(sysdate-to_date('20020405','yyyymmdd'))fromdual;

5.时间为null的用法
selectid,active_datefromtable1
UNION
select1,TO_DATE(null)fromdual;

注意要用TO_DATE(null)
6.月份差
a_datebetweento_date('20011201','yyyymmdd')andto_date('20011231','yyyymmdd')
那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。
所以,当时间需要精确的时候,觉得to_char还是必要的

7.日期格式冲突问题
输入的格式要看你安装的ORACLE字符集的类型,比如:US7ASCII,date格式的类型就是:'01-Jan-01'
altersystemsetNLS_DATE_LANGUAGE=American
altersessionsetNLS_DATE_LANGUAGE=American
或者在to_date中写
selectto_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE=American')fromdual;

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表