2、相差月数,sysdate+5 在系统时间底蕴上延缓5天 add

declare @days as int, @hours as int, @minutes as int, @seconds as int;

  结果:3

sysdate+ 在系统时间基础上延迟5秒 sysdate+5/24/60
在系统时间基础上延迟5分钟 sysdate+5/24 在系统时间基础上延迟5小时
sysdate+5 在系统时间基础上延迟5天 add_months 在系统时间基础上延迟5月
add_months 在系统时间基础上延迟5年 上月末的日期:select
last_day(add_months from dual; 本月的最后一秒:select trunc,’MM’) –
1/24/60/60 from dual 本周星期一的日期:select trunc+1 from dual
年初至今的天数:select ceil(sysdate – trunc from dual;
今天是今年的第几周 :select to_char from dual 今天是本月的第几周:SELECT
TO_CHAR – TO_CHAR,’WW’) + 1 AS “weekOfMon” FROM dual 本月的天数 SELECT
to_char,’dd’) days FROM dual 今年的天数 select add_months, 12) – trunc
from dual 下个星期一的日期 SELECT Next_day FROM dual
============================================
–计算工作日方法 create table t; alter session set nls_date_format =
‘yyyy-mm-dd’; insert into t values(‘2003-03-01′,’2003-03-03’); insert
into t values(‘2003-03-02′,’2003-03-03’); insert into t
values(‘2003-03-07′,’2003-03-08’); insert into t
values(‘2003-03-07′,’2003-03-09’); insert into t
values(‘2003-03-05′,’2003-03-07’); insert into t
values(‘2003-02-01′,’2003-03-31’); —
这里假定日期都是不带时间的,否则在所有日期前加trunc即可。 select
s,e,e-s+1 total_days, trunc*5 +
length(replace(substr(‘01111100111110′,to_char,’0’,”)) work_days from
t; — drop table t;

例如:某一条记录: 1 16:00 2 12:20

  20:20

引此:

判断当前时间是上午下午还是晚上 SELECT CASE WHEN to_number(to_char
BETWEEN 6 AND 11 THEN ‘上午’ WHEN to_number(to_char BETWEEN 11 AND 17
THEN ‘下午’ WHEN to_number(to_char BETWEEN 17 AND 21 THEN ‘晚上’ END

实例二

  (

FROM dual;

Oracle 中的一些处理日期 将数字转换为任意时间格式.如秒:需要转换为天/小时
SELECT to_char(floor/24))||’天’||to_char(mod,24))||’小时’ FROM DUAL
TO_DATE格式 Day: dd number 12 dy abbreviated fri day spelled out friday
ddspth spelled out, ordinal twelfth Month: mm number 03 mon abbreviated
mar month spelled out march Year: yy two digits 98 yyyy four digits 1998
24小时格式下时间范围为: 0:00:00 – 23:59:59…. 12小时格式下时间范围为:
1:00:00 – 12:59:59 …. 1. 日期和字符转换函数用法 2. select
to_char,’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 from dual; 注意要用TO_DATE 6. a_date between
to_date(‘20011201′,’yyyymmdd’) and to_date(‘20011231′,’yyyymmdd’)
那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。
所以,当时间需要精确的时候,觉得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
查找2002-02-28至2002-02-01间除星期一和七的天数
在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减. 9. select
months_between(to_date(’01-31-1999′,’MM-DD-YYYY’),
to_date(’12-31-1998′,’MM-DD-YYYY’)) “MONTHS” FROM DUAL; 1 select
months_between(to_date(’02-01-1999′,’MM-DD-YYYY’),
to_date(’12-31-1998′,’MM-DD-YYYY’)) “MONTHS” FROM DUAL;
1.03225806451613 10. Next_day的用法 Next_day Monday-Sunday, for format
code DAY Mon-Sun, for format code DY 1-7, for format code D 11 select
to_char TIME from all_objects 注意:第一条记录的TIME
与最后一行是一样的 可以建立一个函数来处理这个问题 create or replace
function sys_date return date is begin return sysdate; end; select
to_char from all_objects; 12. 获得小时数 SELECT EXTRACT(HOUR FROM
TIMESTAMP ‘2001-02-16 2:38:40’) from offer SQL> select sysdate
,to_char from dual; SYSDATE TO_CHAR ——————–
——————— 2003-10-13 19:35:21 07 SQL> select sysdate
,to_char from dual; SYSDATE TO_CHAR ——————–
———————– 2003-10-13 19:35:21 19 获取年月日与此类似 13.
年月日的处理 select older_date, newer_date, years, months, abs( trunc(
newer_date- add_months( older_date,years*12+months ) ) ) days from (
select trunc(months_between( newer_date, older_date )/12) YEARS,
mod(trunc(months_between( newer_date, older_date )), 12 ) MONTHS,
newer_date, older_date from ( select hiredate older_date,
add_months+rownum newer_date from emp ) ) 14. 处理月份天数不定的办法
select to_char(add_months +1, -2), ‘yyyymmdd’),last_day from dual 16.
找出今年的天数 select add_months, 12) – trunc from dual 闰年的处理方法
to_char( last_day( to_date(’02’ ¦ ¦ :year,’mmyyyy’) ), ‘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, ‘GMT’,’EST’), ‘dd/mm/yyyy hh:mi:ss’)
,sysdate from dual; 19. 5秒钟一个间隔 Select TO_DATE(FLOOR(TO_CHAR *
300,’SSSSS’) ,TO_CHAR from dual 2002-11-1 9:55:00 35786
SSSSS表示5位秒数 20. 一年的第几天 select TO_CHAR,sysdate from dual 310
2002-11-6 10:03:51 21.计算小时,分,秒,毫秒 select Days, A, TRUNC Hours,
TRUNC(A*24*60 – 60*TRUNC Minutes, TRUNC(A*24*60*60 – 60*TRUNC
Seconds, TRUNC(A*24*60*60*100 – 100*TRUNC mSeconds from ( select
trunc Days, sysdate – trunc A from dual ) select * from tabname order
by decode*to_char(rq,’yyyymmddhh24miss’); // floor 作为年 floor /30)
作为月 mod, 30)作为日. 23.next_day函数
next_day是从当前开始下一个星期五。后面的数字是从星期日开始算起。 1 2 3
4 5 6 7 日 一 二 三 四 五 六
————————————————————— select
(sysdate-to_date(‘2003-12-03 12:55:45′,’yyyy-mm-dd
hh24:mi:ss’))*24*60*60 from dual 日期 返回的是天 然后 转换为ss
转此:
将数字转换为任意时间格式.如秒:需要转换为天/小时 SELECT
to_char(floor/24))||’天’||to_char(mod,24))||’小时’ FROM DUAL
TO_DATE格式 Day: dd number 12 dy abbreviated fri day spelled out friday
ddspth spelled out, ordinal twelfth Month: mm number 03 mon abbreviated
mar month spelled out march Year: yy two digits 98 yyyy four digits 1998
24小时格式下时间范围为: 0:00:00 – 23:59:59…. 12小时格式下时间范围为:
1:00:00 – 12:59:59 …. 1. 日期和字符转换函数用法 2. select
to_char,’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 from dual; 注意要用TO_DATE 6. a_date between
to_date(‘20011201′,’yyyymmdd’) and to_date(‘20011231′,’yyyymmdd’)
那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。
所以,当时间需要精确的时候,觉得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
查找2002-02-28至2002-02-01间除星期一和七的天数
在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减. 9. select
months_between(to_date(’01-31-1999′,’MM-DD-YYYY’),
to_date(’12-31-1998′,’MM-DD-YYYY’)) “MONTHS” FROM DUAL; 1 select
months_between(to_date(’02-01-1999′,’MM-DD-YYYY’),
to_date(’12-31-1998′,’MM-DD-YYYY’)) “MONTHS” FROM DUAL;
1.03225806451613 10. Next_day的用法 Next_day Monday-Sunday, for format
code DAY Mon-Sun, for format code DY 1-7, for format code D 11 select
to_char TIME from all_objects 注意:第一条记录的TIME
与最后一行是一样的 可以建立一个函数来处理这个问题 create or replace
function sys_date return date is begin return sysdate; end; select
to_char from all_objects; 12. 获得小时数 SELECT EXTRACT(HOUR FROM
TIMESTAMP ‘2001-02-16 2:38:40’) from offer SQL> select sysdate
,to_char from dual; SYSDATE TO_CHAR ——————–
——————— 2003-10-13 19:35:21 07 SQL> select sysdate
,to_char from dual; SYSDATE TO_CHAR ——————–
———————– 2003-10-13 19:35:21 19 获取年月日与此类似 13.
年月日的处理 select older_date, newer_date, years, months, abs( trunc(
newer_date- add_months( older_date,years*12+months ) ) ) days from (
select trunc(months_between( newer_date, older_date )/12) YEARS,
mod(trunc(months_between( newer_date, older_date )), 12 ) MONTHS,
newer_date, older_date from ( select hiredate older_date,
add_months+rownum newer_date from emp ) ) 14. 处理月份天数不定的办法
select to_char(add_months +1, -2), ‘yyyymmdd’),last_day from dual 16.
找出今年的天数 select add_months, 12) – trunc from dual 闰年的处理方法
to_char( last_day( to_date(’02’ ¦ ¦ :year,’mmyyyy’) ), ‘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, ‘GMT’,’EST’), ‘dd/mm/yyyy hh:mi:ss’)
,sysdate from dual; 19. 5秒钟一个间隔 Select TO_DATE(FLOOR(TO_CHAR *
300,’SSSSS’) ,TO_CHAR from dual 2002-11-1 9:55:00 35786
SSSSS表示5位秒数 20. 一年的第几天 select TO_CHAR,sysdate from dual 310
2002-11-6 10:03:51 21.计算小时,分,秒,毫秒 select Days, A, TRUNC Hours,
TRUNC(A*24*60 – 60*TRUNC Minutes, TRUNC(A*24*60*60 – 60*TRUNC
Seconds, TRUNC(A*24*60*60*100 – 100*TRUNC mSeconds from ( select
trunc Days, sysdate – trunc A from dual ) select * from tabname order
by decode*to_char(rq,’yyyymmddhh24miss’); // floor 作为年 floor /30)
作为月 mod, 30)作为日. 23.next_day函数
next_day是从当前开始下一个星期五。后面的数字是从星期日开始算起。 1 2 3
4 5 6 7 日 一 二 三 四 五 六
————————————————————— select
(sysdate-to_date(‘2003-12-03 12:55:45′,’yyyy-mm-dd
hh24:mi:ss’))*24*60*60 from dual 日期 返回的是天 然后 转换为ss
转此:
将数字转换为任意时间格式.如秒:需要转换为天/小时 SELECT
to_char(floor/24))||’天’||to_char(mod,24))||’小时’ FROM DUAL
TO_DATE格式 Day: dd number 12 dy abbreviated fri day spelled out friday
ddspth spelled out, ordinal twelfth Month: mm number 03 mon abbreviated
mar month spelled out march Year: yy two digits 98 yyyy four digits 1998
24小时格式下时间范围为: 0:00:00 – 23:59:59…. 12小时格式下时间范围为:
1:00:00 – 12:59:59 …. 1. 日期和字符转换函数用法 2. select
to_char,’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 from dual; 注意要用TO_DATE 6. a_date between
to_date(‘20011201′,’yyyymmdd’) and to_date(‘20011231′,’yyyymmdd’)
那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。
所以,当时间需要精确的时候,觉得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
查找2002-02-28至2002-02-01间除星期一和七的天数
在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减. 9. select
months_between(to_date(’01-31-1999′,’MM-DD-YYYY’),
to_date(’12-31-1998′,’MM-DD-YYYY’)) “MONTHS” FROM DUAL; 1 select
months_between(to_date(’02-01-1999′,’MM-DD-YYYY’),
to_date(’12-31-1998′,’MM-DD-YYYY’)) “MONTHS” FROM DUAL;
1.03225806451613 10. Next_day的用法 Next_day Monday-Sunday, for format
code DAY Mon-Sun, for format code DY 1-7, for format code D 11 select
to_char TIME from all_objects 注意:第一条记录的TIME
与最后一行是一样的 可以建立一个函数来处理这个问题 create or replace
function sys_date return date is begin return sysdate; end; select
to_char from all_objects; 12. 获得小时数 SELECT EXTRACT(HOUR FROM
TIMESTAMP ‘2001-02-16 2:38:40’) from offer SQL> select sysdate
,to_char from dual; SYSDATE TO_CHAR ——————–
——————— 2003-10-13 19:35:21 07 SQL> select sysdate
,to_char from dual; SYSDATE TO_CHAR ——————–
———————– 2003-10-13 19:35:21 19 获取年月日与此类似 13.
年月日的处理 select older_date, newer_date, years, months, abs( trunc(
newer_date- add_months( older_date,years*12+months ) ) ) days from (
select trunc(months_between( newer_date, older_date )/12) YEARS,
mod(trunc(months_between( newer_date, older_date )), 12 ) MONTHS,
newer_date, older_date from ( select hiredate older_date,
add_months+rownum newer_date from emp ) ) 14. 处理月份天数不定的办法
select to_char(add_months +1, -2), ‘yyyymmdd’),last_day from dual 16.
找出今年的天数 select add_months, 12) – trunc from dual 闰年的处理方法
to_char( last_day( to_date(’02’ ¦ ¦ :year,’mmyyyy’) ), ‘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, ‘GMT’,’EST’), ‘dd/mm/yyyy hh:mi:ss’)
,sysdate from dual; 19. 5秒钟一个间隔 Select TO_DATE(FLOOR(TO_CHAR *
300,’SSSSS’) ,TO_CHAR from dual 2002-11-1 9:55:00 35786
SSSSS表示5位秒数 20. 一年的第几天 select TO_CHAR,sysdate from dual 310
2002-11-6 10:03:51 21.计算小时,分,秒,毫秒 select Days, A, TRUNC Hours,
TRUNC(A*24*60 – 60*TRUNC Minutes, TRUNC(A*24*60*60 – 60*TRUNC
Seconds, TRUNC(A*24*60*60*100 – 100*TRUNC mSeconds from ( select
trunc Days, sysdate – trunc A from dual ) select * from tabname order
by decode*to_char(rq,’yyyymmddhh24miss’); // floor 作为年 floor /30)
作为月 mod, 30)作为日. 23.next_day函数
next_day是从当前开始下一个星期五。后面的数字是从星期日开始算起。 1 2 3
4 5 6 7 日 一 二 三 四 五 六
————————————————————— select
(sysdate-to_date(‘2003-12-03 12:55:45′,’yyyy-mm-dd
hh24:mi:ss’))*24*60*60 from dual 日期 返回的是天 然后 转换为ss
转此:
将数字转换为任意时间格式.如秒:需要转换为天/小时 SELECT
to_char(floor/24))||’天’||to_char(mod,24))||’小时’ FROM DUAL
TO_DATE格式 Day: dd number 12 dy abbreviated fri day spelled out friday
ddspth spelled out, ordinal twelfth Month: mm number 03 mon abbreviated
mar month spelled out march Year: yy two digits 98 yyyy four digits 1998
24小时格式下时间范围为: 0:00:00 – 23:59:59…. 12小时格式下时间范围为:
1:00:00 – 12:59:59 …. 1. 日期和字符转换函数用法 2. select
to_char,’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 from dual; 注意要用TO_DATE 6. a_date between
to_date(‘20011201′,’yyyymmdd’) and to_date(‘20011231′,’yyyymmdd’)
那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。
所以,当时间需要精确的时候,觉得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
查找2002-02-28至2002-02-01间除星期一和七的天数
在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减. 9. select
months_between(to_date(’01-31-1999′,’MM-DD-YYYY’),
to_date(’12-31-1998′,’MM-DD-YYYY’)) “MONTHS” FROM DUAL; 1 select
months_between(to_date(’02-01-1999′,’MM-DD-YYYY’),
to_date(’12-31-1998′,’MM-DD-YYYY’)) “MONTHS” FROM DUAL;
1.03225806451613 10. Next_day的用法 Next_day Monday-Sunday, for format
code DAY Mon-Sun, for format code DY 1-7, for format code D 11 select
to_char TIME from all_objects 注意:第一条记录的TIME
与最后一行是一样的 可以建立一个函数来处理这个问题 create or replace
function sys_date return date is begin return sysdate; end; select
to_char from all_objects; 12. 获得小时数 SELECT EXTRACT(HOUR FROM
TIMESTAMP ‘2001-02-16 2:38:40’) from offer SQL> select sysdate
,to_char from dual; SYSDATE TO_CHAR ——————–
——————— 2003-10-13 19:35:21 07 SQL> select sysdate
,to_char from dual; SYSDATE TO_CHAR ——————–
———————– 2003-10-13 19:35:21 19 获取年月日与此类似 13.
年月日的处理 select older_date, newer_date, years, months, abs( trunc(
newer_date- add_months( older_date,years*12+months ) ) ) days from (
select trunc(months_between( newer_date, older_date )/12) YEARS,
mod(trunc(months_between( newer_date, older_date )), 12 ) MONTHS,
newer_date, older_date from ( select hiredate older_date,
add_months+rownum newer_date from emp ) ) 14. 处理月份天数不定的办法
select to_char(add_months +1, -2), ‘yyyymmdd’),last_day from dual 16.
找出今年的天数 select add_months, 12) – trunc from dual 闰年的处理方法
to_char( last_day( to_date(’02’ ¦ ¦ :year,’mmyyyy’) ), ‘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, ‘GMT’,’EST’), ‘dd/mm/yyyy hh:mi:ss’)
,sysdate from dual; 19. 5秒钟一个间隔 Select TO_DATE(FLOOR(TO_CHAR *
300,’SSSSS’) ,TO_CHAR from dual 2002-11-1 9:55:00 35786
SSSSS表示5位秒数 20. 一年的第几天 select TO_CHAR,sysdate from dual 310
2002-11-6 10:03:51 21.计算小时,分,秒,毫秒 select Days, A, TRUNC Hours,
TRUNC(A*24*60 – 60*TRUNC Minutes, TRUNC(A*24*60*60 – 60*TRUNC
Seconds, TRUNC(A*24*60*60*100 – 100*TRUNC mSeconds from ( select
trunc Days, sysdate – trunc A from dual ) select * from tabname order
by decode*to_char(rq,’yyyymmddhh24miss’); // floor 作为年 floor /30)
作为月 mod, 30)作为日. 23.next_day函数
next_day是从当前开始下一个星期五。后面的数字是从星期日开始算起。 1 2 3
4 5 6 7 日 一 二 三 四 五 六
————————————————————— select
(sysdate-to_date(‘2003-12-03 12:55:45′,’yyyy-mm-dd
hh24:mi:ss’))*24*60*60 from dual 日期 返回的是天 然后 转换为ss
12下一页阅读全文

4、select datediff( day, ‘2008.08.25’, ‘2008.09.01’ )

  declare @t table

我有一个表,其中有四个字段:开始天数,开始时间,到达天数,到达时间(这四个字段都是varchar类型)

  下面来看个实例

5、select datediff( second, 2009-8-25 12:15:12′, 2009-9-1 7:18:20′)
–返回相差秒数6、select datediff( minute, 2009-8-25 12:15:12′, 2009-9-1
7:18:20′) –返回相差分钟数7、select datediff( hour, 2009-8-25 12:15:12′,
2009-9-1 7:18:20′) –返回相差小时数

  select
trunc((months_between(trunc(sysdate,’dd’),to_date(‘2009-01-01′,’yyyy-mm-dd’)))/12)
from dual;

sql日期时间相减语句本款教程利用了datediff函数,来对数据库的日期进行相减查询哦,下面便写了N种关于mssql
日期相减的方法。sql中两个日期相减

  endtime varchar(20)

select date=rtrim(date/60)+’:’+rtrim(date%60)from (select
date=datediff(mi,1,dateadd(d,endday-beginday,beginday)-begintime+endtime)from
@t )t

  beginday int,

下面来看个实例

  set @seconds = @seconds – @minutes * 60;

这样的sql语句该怎么写???

  方法二

declare @dt1 as datetime, @dt2 as datetime; select @dt1 = ‘2008-8-4
9:36:41’, @dt2 = ‘2008-8-2 9:33:39’;

  declare @dt1 as datetime, @dt2 as datetime;

use pubsselect distinct datediff(day, ‘2009-3-12’, ‘2009-3-15’) as
difdayfrom titles结果:3

  select datediff( hour, 2009-8-25 12:15:12′, 2009-9-1 7:18:20′)
–返回相差小时数

sql日期时间相减语句本款教程利用了datediff函数,来对数据库教程的日期进行相减查询哦,下面便写了n种关于mssql
日期相减的方法。sql中两个日期相减 1、相差天数 select
trunc(sysdate,’yyyy’)-to_date(‘2009-01-04′,’yyyy-mm-dd’) from dual;
2、相差月数 select
months_between(trunc(sysdate,’mm’),to_date(‘2009-01′,’yyyy-mm’)) from
dual; 3、相差年数 select
trunc((months_between(trunc(sysdate,’dd’),to_date(‘2009-01-01′,’yyyy-mm-dd’)))/12)
from dual;

  insert @t select ‘1’, ’16:00′,’2′,’12:20′

set @seconds = datediff( second, @dt2, @dt1); set @days = @seconds / (24
* 60 * 60) set @seconds = @seconds – @days * 24 * 60 * 60 set
@hours = @seconds / (60 * 60); set @seconds = @seconds – @hours * 60
* 60 set @minutes = @seconds / 60; set @seconds = @seconds – @minutes
* 60; select convert(varchar(10), @days ) + ‘天’ + convert(varchar(10),
@hours ) + ‘小时’ + convert(varchar(10), @minutes ) + ‘分’ +
convert(varchar(10), @seconds ) + ‘秒’;

  (select
date=datediff(mi,1,dateadd(d,endday-beginday,beginday)-begintime+endtime)from
@t )t

问题三:select datediff( day, 2009-8-25 12:15:12′, 2009-9-1 7:18:20′)

  ————————-

方法二

  from @t

insert @t select 1,’16:00′,2,’12:20’union all select 1,’3:00′,3,’19:10′

  7、

date————————-20:2064:10

  from titles

–如果开始天数,到达天数大于31select 到达天数 * 24 +
datepart(hh,到达时间) – 开始天数 * 24 – datepart(hh,开始时间)from @t

  select 到达天数 * 24 + datepart(hh,到达时间) – 开始天数 * 24 –
datepart(hh,开始时间)

declare @t table (beginday int,begintime varchar(20),endday int,endtime
varchar(20))

  sql中两个日期相减

我的目的就是用 select-(开始天数+开始时间) as 花费时间 from table

  select convert(varchar(10), @days ) + ‘天’ + convert(varchar(10),
@hours ) + ‘小时’ + convert(varchar(10), @minutes ) + ‘分’ +
convert(varchar(10), @seconds ) + ‘秒’;

相关文章

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图