在Oracleto_date详细用法的例子(Oracle数据格式转换)
1。日期和字符转换函数的用法(to_date,to_char)
复制代码代码如下所示:
选择to_char(sysdate'yyyy-mm-dd hh24:MI:SS)为带双; / /日期转换为字符串
选择to_char(SYSDATE,'yyyy)作为nowyear双; / /得到一年的时间
选择to_char(SYSDATE,'mm)作为nowmonth双; / /获得本月的时间
选择to_char(SYSDATE,'dd)作为目前双; / /准时
选择to_char(SYSDATE,'hh24)作为nowhour双; / /得到的时候
选择to_char(SYSDATE,'mi)作为nowminute双; / /得到的时候
选择to_char(SYSDATE,'ss)作为nowsecond双; / /得到第二次
2。字符串和时间interrotation
复制代码代码如下所示:
选择to_date('2004-05-07 13:23:44 ','yyyy-mm-dd hh24:MI:SS)从双
选择to_char(to_date(222,J'),'jsp)从二百二十二元 / /显示
三.一天是一周中的一天。
复制代码代码如下所示:
选择to_char(to_date('2002-08-26 ','yyyy-mm-dd),'day'from双; / /星期一)
选择to_char(to_date('2002-08-26 ','yyyy-mm-dd '),星期,
nls_date_language = american'from双); / /星期一
设置日期语言
改变会话设置nls_date_language =美国;
它也可以是。
to_date('2002-08-26 ','yyyy-mm-dd ','nls_date_language =美国)
4。两个日期之间的天数
复制代码代码如下所示:
选择地板(SYSDATE - to_date('20020405 ','yyyymmdd '))从双;
5。时间是null的使用。
复制代码代码如下所示:
选择ID,active_date从表1
联盟
选择1,to_date双(空); / /注意要用to_date(空)
6。月差
复制代码代码如下所示:
a_date之间to_date('20011201 ','yyyymmdd)和to_date('20011231 ','yyyymmdd)
12点之前的中午12点之后,12月31日和12月1日不包括在这个范围内。
所以当 / /需要准确的时间,时间,想to_char是必要的
7。日期格式冲突
输入的格式取决于Oracle数据库字符类型设置你的安装,如:US7ASCII,和日期格式类型:'01-jan-01
复制代码代码如下所示:
改变系统设置nls_date_language =美国
改变会话设置nls_date_language =美国
/ /或写在to_date
选择to_char(to_date('2002-08-26 ','yyyy-mm-dd),
天''nls_date_language =美国'双);
这只是我的关注/ nls_date_language,当然很多,看
SELECT * FROM nls_session_parameters
SELECT * FROM V nls_parameters美元
8。查询特殊条件天数
复制代码代码如下所示:
选择计数(*)
从(选择rownum-1 rnum)
从all_objects
在行号to_date('2002-02-28 ','yyyy-mm-dd)- to_date(2002—
02-01,'yyyy-mm-dd ')+ 1
)
在to_char(to_date('2002-02-01 ','yyyy-mm-dd ')+ rnum-1,会)
不在(1,7')
找到2002-02-28 / / 2002-02-01除了星期一和七天
分别在 / /之前调用dbms_utility.get_time后,将减法的结果(得到的是1 / 100秒,而不是MS)
9。查找一个月
复制代码代码如下所示:
选择months_between(to_date('01-31-1999 ','mm-dd-yyyy),
to_date('12-31-1998 ','mm-dd-yyyy '))月从双;
研究结果如下:1/
选择months_between(to_date('02-01-1999 ','mm-dd-yyyy),
to_date('12-31-1998 ','mm-dd-yyyy '))月从双;
研究结果如下:1.03225806451613/
使用10。next_day
复制代码代码如下所示:
next_day(日,天)
星期一星期日,格式代码日
格式化格式代码
1-7,格式码D
11。小时数
复制代码代码如下所示:
提取()查找日期或区间值的字段值
选择提取(从时间戳'2001-02-16 2:38:40小时)提供
选择系统日期,to_char(SYSDATE,'hh)从双;
to_char SYSDATE(SYSDATE,'hh)
-----------------------------------------
2003-10-13 19:35:21 07
选择系统日期,to_char(SYSDATE,'hh24)从双;
to_char SYSDATE(SYSDATE,'hh24)
-------------------------------------------
2003-10-13 19:35:21 19
12日的待遇。
复制代码代码如下所示:
选择
older_date,
newer_date,
年,
月,
(ABS
(TRUNC
newer_date - add_months(older_date,年×12个月)
)
天)
从
(
选择
(TRUNC
months_between(newer_date,older_date) / 12
年),
(MOD
(TRUNC
months_between(newer_date,older_date)
),
十二
个月),
newer_date,
older_date
从
(
选择
older_date姓名和雇佣,
add_months(姓名和雇佣,行号)+行号newer_date
从
EMP
)
)
13。处理月份不确定天数的措施
复制代码代码如下所示:
选择to_char(add_months(last_day(SYSDATE)+ 1,2),'yyyymmdd),last_day(SYSDATE)从双
14。找出今年的天数
复制代码代码如下所示:
Select add_months (TRUNC (sysdate,'year'), 12) - TRUNC (sysdate,'year') from dual
治疗方法
to_char(last_day(to_date(102的| |:年,'mmyyyy ','dd ')))
如果它不是闰年28
15.yyyy和啊之间的差异
复制代码代码如下所示:
yyyy99 to_c
在
年990099
啊991999
年010001
啊012001
治疗16。不同的时区
复制代码代码如下所示:
选择to_char(new_time(SYSDATE,'gmt ','est),'dd / /年HH:毫米MI:SS),
系统日期从双;
间隔17.5秒
复制代码代码如下所示:
选择to_date(地板(to_char(SYSDATE,sssss ') / 300)* 300,sssss),
to_char(SYSDATE,sssss)从双
/ / 2002-11-1 9:55:00 35786
/ / sssss表示5比特秒
公元前18年的头几天。
复制代码代码如下所示:
选择to_char(SYSDATE,'ddd '),系统日期从双
/ / 310 2002-11-6 10:03:51
19。小时,分钟,秒,毫秒
复制代码代码如下所示:
选择
天,
一个,
trunc(* 24)小时,
trunc(* 24 * 60-60 * TRUNC(* 24))分钟,
(TRUNC
* 24 * 60 * 60-60 * TRUNC(* 24 * 60)
秒),
(TRUNC
* 24 * 60 * 60 *百* TRUNC(* 24 * 60 * 60)
mseconds)
从
(
选择
trunc(SYSDATE)天,
系统日期- TRUNC(SYSDATE)一
从
二重的
选择)
*
从
但是
顺序
解码(模式,'fifo ',1 - 1)* to_char(RQ,'yyyymmddhh24miss)
/ /地板((date2-date1) / 365)为年
/ /地板((date2-date1,365)/ 30)一个月
/ / D(MOD(date2-date1,365),30)的一天。
20.next_day功能
复制代码代码如下所示:
下返回,日期是星期日,星期日或星期六。
next_day(SYSDATE,6)是下个星期五,从现在开始。下面的数字从星期日开始。
1234567
123456 天
选择(sysdate-to_date('2003-12-03 12:55:45 ','yyyy-mm-dd hh24:MI:SS))* 24 * 60 * 60双
在转换到SS之后,返回日期是自然的。
21,圆{被舍入到最近的日期}(日:圆到最近的星期日)
复制代码代码如下所示:
选择sysdate S1,
圆(SYSDATE)S2,
圆(SYSDATE,'year ')年,
圆(SYSDATE,'month ')月,
圆(系统日期、星期)天从双
22、trunc {截断到最近的日期,单位是天}和日期类型返回。
复制代码代码如下所示:
选择sysdate S1,
trunc(SYSDATE)S2 / /返回当前的日期,没有时间的每一分钟
trunc(SYSDATE,'year ')年 / /返回当前年1月1日,当没有
trunc(SYSDATE,'month)月,返回当前月 / / 1,不是每一分钟
trunc(系统日期、星期)天/ /星期日返回当前周,当没有
从双
23,返回日期表中的最新日期
复制代码代码如下所示:
选择最大('01-1月04,'04-1月04,'10-2 - 04)从双
24。计算时间差
复制代码代码如下所示:
注:甲骨文时差是根据天数,所以成人月,日转换。
选择地板(to_number(sysdate-to_date)('2007-11-02 15:55:03,
yyyy-mm-dd hh24:MI:学生/ 365 spanyears从))) / /双年时间差
选择细胞(moths_between(sysdate-to_date)('2007-11-02 15:55:03,
yyyy-mm-dd hh24:MI:ss'as spanmonths双))) / /月时间差
选择地板(to_number(sysdate-to_date)('2007-11-02 15:55:03,
yyyy-mm-dd hh24:MI:ss'as spandays双))) / /天的时间差
选择地板(to_number(sysdate-to_date)('2007-11-02 15:55:03,
yyyy-mm-dd hh24:MI:SS×24为spanhours从))) / /双时的时间差
选择地板(to_number(sysdate-to_date)('2007-11-02 15:55:03,
yyyy-mm-dd hh24:MI:SS的* 24 * 60 spanminutes从))) / /双时间差
选择地板(to_number(sysdate-to_date)('2007-11-02 15:55:03,
yyyy-mm-dd hh24:MI:SS的* 24 * 60 * 60 spanseconds从))) / /双二时间差
25更新时间
复制代码代码如下所示:
Oracle时间加和减是基于天数,而变化的数量是n。
选择to_char(SYSDATE,'yyyy-mm-dd hh24:MI:SS),
to_char(SYSDATE + n * 365'yyyy-mm-dd hh24:MI:SS)从双 / / -新的年变化
选择to_char(SYSDATE,'yyyy-mm-dd hh24:MI:SS),
add_months(SYSDATE,n)从双 / /月新的时间变化
选择to_char(SYSDATE,'yyyy-mm-dd hh24:MI:SS),
to_char(SYSDATE + n'yyyy-mm-dd hh24:MI:SS)从双 / /天-新的时间变化
选择to_char(SYSDATE,'yyyy-mm-dd hh24:MI:SS),
to_char(SYSDATE + n / 24'yyyy-mm-dd hh24:MI:SS)从双 / /新的改变的时候
选择to_char(SYSDATE,'yyyy-mm-dd hh24:MI:SS),
to_char(SYSDATE + n / 24 / 60'yyyy-mm-dd hh24:MI:SS)从双 / /变化的时间点的时间
选择to_char(SYSDATE,'yyyy-mm-dd hh24:MI:SS),
to_char(SYSDATE + n / 24 / 60 / 60'yyyy-mm-dd hh24:MI:SS)从双 / /变化时间秒的时间
26。月的第一天,最后一天
复制代码代码如下所示:
选择Trunc(Trunc(SYSDATE,'month)- 1,'month)first_day_last_month,
Trunc(SYSDATE,'month)- 1 / 86400 last_day_last_month,
Trunc(SYSDATE,'month)first_day_cur_month,
last_day(Trunc(SYSDATE,'month '))+1 / 86400 last_day_cur_month
从双;