SQL Server 常用日期函数DateDiff()、GetDate() 以及oracle 日期常用函數 (SYSDATE、日期格式)等详解


SQL Server 常用日期函数DateDiff()、GetDate() 以及oracle 日期常用函數 (SYSDATE、日期格式)等详解


一、GetDate() 函数

作用:

GetDate() 函数用于返回当前的时间和日期,返回值样式举例:2013/10/29 9:11:05

语法:

GetDate()

ASP 实例:

<%
'数据库链接定义省略
sql="SELECT GetDate() AS CurrentDateTime"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.open sql, conn, 1, 1
if not(rs.bof and rs.eof) then
	Response.Write rs("CurrentDateTime")
end if
rs.close
set rs=nothing
%>

 

二、DateDiff() 函数

作用:

DateDiff() 函数返回“开始日期”与“结束日期”之间的差值(如:年、天数等)。

返回值类型

DateDiff() 函数返回值类型为:Long(长整型),范围从 -2,147,483,648 到 2,147,483,647。

语法:

DateDiff(参数 , 开始日期 , 结束日期)

参数取值  

 

说明

参数写法

参数简写

最大

Year

yy

 

季度

Quarter

q

 

Month

m

 

Week

wk

 

Day

d

 

小时

Hour

hh

 

分钟

Minute

mi

 

Second

s

68年

毫秒

Millisecond

ms

24天20小时31分23.648秒

 

ASP 实例:

<%
'数据库链接定义省略
sql="SELECT DateDiff(ms,'2013-1-1','2013-1-25 20:31:23.648') AS DiffVal"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.open sql, conn, 1, 1
if not(rs.bof and rs.eof) then
	Response.Write rs("DiffVal")
end if
rs.close
set rs=nothing
'输出:2147483646(毫秒)

sql="SELECT DateDiff(Week,'2013-10-20','2014-10-20') AS DiffVal"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.open sql, conn, 1, 1
if not(rs.bof and rs.eof) then
	Response.Write "
"
&rs("DiffVal") end if rs.close set rs=nothing '输出:52(周) sql="SELECT DateDiff(d,'2013-10-20',GetDate()) AS DiffVal" Set rs=Server.CreateObject("ADODB.RecordSet") rs.open sql, conn, 1, 1 if not(rs.bof and rs.eof) then Response.Write "
"
&rs("DiffVal") end if rs.close set rs=nothing '当前系统日期为:2013-10-29,输出:9(天) %>

 

三、DateAdd() 函数

作用:

DateAdd() 函数用于在指定日期增加(或减去)参数设定的间隔。

语法: 

DateAdd(参数 , 加(减)间隔 , 指定日期) 

参数取值:

 

说明

参数写法

参数简写

Year

yy

季度

Quarter

q

Month

m

Week

wk

Day

d

小时

Hour

hh

分钟

Minute

mi

Second

s

毫秒

Millisecond

ms

 

ASP 实例:

 

<%
'数据库链接定义省略
sql="SELECT DateAdd(day,5,'2013-1-1') AS DateAddVal"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.open sql, conn, 1, 1
if not(rs.bof and rs.eof) then
	Response.Write rs("DateAddVal")
end if
rs.close
set rs=nothing
'输出:2013/1/6

sql="SELECT DateAdd(s,10,'2013-1-1') AS DateAddVal"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.open sql, conn, 1, 1
if not(rs.bof and rs.eof) then
	Response.Write rs("DateAddVal")
end if
rs.close
set rs=nothing
'输出:2013/1/1 0:00:10

sql="SELECT DateAdd(mi,-1,'2013-1-1') AS DateAddVal"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.open sql, conn, 1, 1
if not(rs.bof and rs.eof) then
	Response.Write rs("DateAddVal")
end if
rs.close
set rs=nothing
'输出:2012/12/31 23:59:00
%>

 

四、Convert() 函数

作用:

Convert() 函数用来将日期转换为指定样式的新数据类型。

语法:

Convert(数据类型(长度) , 需转换日期 , 样式参数)

常用参数取值:

 

样式参数

样式说明

长度

101

 mm/dd/yyyy

10

110

 mm-dd-yyyy

10

103

 dd/mm/yyyy

10

105

 dd-mm-yyyy

10

111

 yyyy/mm/dd

10

112

 yyyymmdd

8

108

 hh:mm:ss

8

114

 hh:mm:ss:mmm

12

120

 yyyy-mm-dd hh:mm:ss

19

121

 yyyy-mm-dd hh:mm:ss.mmm

23

 

 ASP 实例:

<%
'数据库链接定义省略
sql="SELECT Convert(VarChar(19),GetDate(),120)  AS DateConvert"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.open sql, conn, 1, 1
if not(rs.bof and rs.eof) then
	Response.Write rs("DateConvert")
end if
rs.close
set rs=nothing
'输出:2013-10-29 11:07:44 

sql="SELECT Convert(VarChar(12),GetDate(),114)  AS DateConvert"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.open sql, conn, 1, 1
if not(rs.bof and rs.eof) then
	Response.Write "
"
&rs("DateConvert") end if rs.close set rs=nothing '输出:11:11:14:563 %>

 

五、DatePart() 函数

作用:

DatePart() 函数用来返回日期(时间)参数指定的部份,如年、月、日、时、分、秒等。

语法:

DatePart(参数 , 日期)

参数取值:

 

说明

参数写法

参数简写

Year

yy

季度

Quarter

q

Month

m

Week

wk

Day

d

小时

Hour

hh

分钟

Minute

mi

Second

s

毫秒

Millisecond

ms

 ASP 实例:

 

 

<%
'数据库链接定义省略
sql="SELECT DatePart(mi,'2013-10-01 23:12:09.456')  AS PartDate"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.open sql, conn, 1, 1
if not(rs.bof and rs.eof) then
	Response.Write rs("PartDate")
end if
rs.close
set rs=nothing
'输出:12(分钟部分)

sql="SELECT DatePart(ms,'2013-10-01 23:12:09.456')  AS PartDate"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.open sql, conn, 1, 1
if not(rs.bof and rs.eof) then
	Response.Write rs("PartDate")
end if
rs.close
set rs=nothing
'输出:457(毫秒部分,有误差)
%>

        

ORACLE时间函数(SYSDATE)深入理解


加法 
select sysdate,add_months(sysdate,12) from dual; --加1年 
select sysdate,add_months(sysdate,1) from dual; --加1月 
select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期 
select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual; --加1天 
select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --加1小时 
select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1分钟 
select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1秒 

减法 
select sysdate,add_months(sysdate,-12) from dual; --减1年 
select sysdate,add_months(sysdate,-1) from dual; --减1月 
select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual; --减1星期 
select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual; --减1天 
select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --减1小时 
select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1分钟 
select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1秒 

ORACLE时间函数(SYSDATE)简析 
1:取得当前日期是本月的第几周 
SQL> select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual; 
TO_CHAR(SYSDATE,'YY 
------------------- 
20030327 4 18:16:09 
SQL> select to_char(sysdate,'W') from dual; 



2:取得当前日期是一个星期中的第几天,注意星期日是第一天 
SQL> select sysdate,to_char(sysdate,'D') from dual; 
SYSDATE T 
--------- - 
27-MAR-03 5 
  类似: 
select to_char(sysdate,'yyyy') from dual; --年 
select to_char(sysdate,'Q' from dual; --季 
select to_char(sysdate,'mm') from dual; --月 
select to_char(sysdate,'dd') from dual; --日 
ddd 年中的第几天 
WW 年中的第几个星期 
W 该月中第几个星期 
D 周中的星期几 
hh 小时(12) 
hh24 小时(24) 
Mi 分 
ss 秒 
3:取当前日期是星期几中文显示: 
SQL> select to_char(sysdate,'day') from dual; 
TO_CHAR(SYSDATE,'DAY') 
---------------------- 

星期四 
4:如果一个表在一个date类型的字段上面建立了索引,如何使用 
alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS' 

5: 得到当前的日期 
select sysdate from dual; 
6: 得到当天凌晨0点0分0秒的日期 
select trunc(sysdate) from dual; 
-- 得到这天的最后一秒 
select trunc(sysdate) + 0.99999 from dual; 
-- 得到小时的具体数值 
select trunc(sysdate) + 1/24 from dual; 
select trunc(sysdate) + 7/24 from dual; 
7.得到明天凌晨0点0分0秒的日期 
select trunc(sysdate+1) from dual; 
select trunc(sysdate)+1 from dual; 
8: 本月一日的日期 
select trunc(sysdate,'mm') from dual; 
9:得到下月一日的日期 
select trunc(add_months(sysdate,1),'mm') from dual; 

10:返回当前月的最后一天? 
select last_day(sysdate) from dual; 
select last_day(trunc(sysdate)) from dual; 
select trunc(last_day(sysdate)) from dual; 
select trunc(add_months(sysdate,1),'mm') - 1 from dual; 
11: 得到一年的每一天 
select trunc(sysdate,'yyyy')+ rn -1 date0 
from 
(select rownum rn from all_objects 
where rownum<366); 
12:今天是今年的第N天 
SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL; 
13:如何在给现有的日期加上2年 
select add_months(sysdate,24) from dual; 
14:判断某一日子所在年分是否为润年 
select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','闰年','平年') from dual; 
15:判断两年后是否为润年 
select decode(to_char(last_day(trunc(add_months(sysdate,24),'y')+31),'dd'),'29','闰年','平年') from dual; 
16:得到日期的季度 
select ceil(to_number(to_char(sysdate,'mm'))/3) from dual; 
select to_char(sysdate, 'Q') from dual;
分类:  Oracle数据库

ORACLE时间格式


SYSDATE  
2 --◎ 可得到目前系統的時間    
3  
4   ex.     
5     select sysdate from dual;  
6  
7     sysdate     
8     ----------     
9     20-SEP-07  
10  
11 常用之日期格式  
12  
13 日期格式                 說明  
14 ------------------------------------------------------------------------  
15 YYYY/MM/DD              -- 年/月/日   
16 YYYY                    -- 年(4位)  
17 YYY                     -- 年(3位)  
18 YY                      -- 年(2位)  
19 MM                      -- 月份  
20 DD                      -- 日期  
21 D                       -- 星期  
22                             -- 星期日 = 1  星期一 = 2 星期二 = 3  
23                         -- 星期三 = 4  星期四 = 5 星期五 = 6 星期六 = 7  
24  
25 DDD                     -- 一年之第幾天  
26 WW                      -- 一年之第幾週  
27 W                       -- 一月之第幾週  
28 YYYY/MM/DD HH24:MI:SS   -- 年/月/日 時(24小時制):分:秒  
29 YYYY/MM/DD HH:MI:SS     -- 年/月/日 時(非24小時制):分:秒  
30 J                       -- Julian day,Bc 4712/01/01 為1  
31 RR/MM/DD                -- 公元2000問題   
32                -- 00-49 = 下世紀;50-99 = 本世紀  
33 ex.  
34 select to_char(sysdate,'YYYY/MM/DD'FROM DUAL;             -- 2007/09/20  
35 select to_char(sysdate,'YYYY'FROM DUAL;                   -- 2007  
36 select to_char(sysdate,'YYY'FROM DUAL;                    -- 007  
37 select to_char(sysdate,'YY'FROM DUAL;                     -- 07  
38 select to_char(sysdate,'MM'FROM DUAL;                     -- 09  
39 select to_char(sysdate,'DD'FROM DUAL;                     -- 20  
40 select to_char(sysdate,'D'FROM DUAL;                      -- 5  
41 select to_char(sysdate,'DDD'FROM DUAL;                    -- 263  
42 select to_char(sysdate,'WW'FROM DUAL;                     -- 38  
43 select to_char(sysdate,'W'FROM DUAL;                      -- 3  
44 select to_char(sysdate,'YYYY/MM/DD HH24:MI:SS'FROM DUAL;  -- 2007/09/20 15:24:13  
45 select to_char(sysdate,'YYYY/MM/DD HH:MI:SS'FROM DUAL;    -- 2007/09/20 03:25:23  
46 select to_char(sysdate,'J'FROM DUAL;                      -- 2454364  
47 select to_char(sysdate,'RR/MM/DD'FROM DUAL;               -- 07/09/20 


你可能感兴趣的:(ORACLE数据库,SQLserver数据库,时间格式,SQL)