天天看點

oracle sql日期比較

oracle sql日期比較:
在今天之前:      

select * from up_date where update < to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

select * from up_date where update <= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

在今天隻後:      

select * from up_date where update > to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

select * from up_date where update >= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

精确時間:      

select * from up_date where update = to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

在某段時間内:      

select * from up_date where update between to_date('2007-07-07 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

select * from up_date where update < to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss') and update > to_date('2007-07-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

select * from up_date where update <= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss') and update >= to_date('2007-07-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

1. 目前系統日期、時間

select getdate() 

2. dateadd 在向指定日期加上一段時間的基礎上,傳回新的 datetime 值

例如:向日期加上2天

select dateadd(day,2,'2004-10-15') --傳回:2004-10-17 00:00:00.000

3. datediff 傳回跨兩個指定日期的日期和時間邊界數。

select datediff(day,'2004-09-01','2004-09-18') --傳回:17

4. datepart 傳回代表指定日期的指定日期部分的整數。

SELECT DATEPART(month, '2004-10-15') --傳回 10

5. datename 傳回代表指定日期的指定日期部分的字元串

SELECT datename(weekday, '2004-10-15') --傳回:星期五

6. day(), month(),year() --可以與datepart對照一下

select 目前日期=convert(varchar(10),getdate(),120)

,目前時間=convert(varchar(8),getdate(),114)

7. select datename(dw,'2004-10-15')

select 本年第多少周=datename(week,getdate())

,今天是周幾=datename(weekday,getdate())

函數 參數/功能 

GetDate( ) --傳回系統目前的日期與時間 

DateDiff (interval,date1,date2) --以interval 指定的方式,傳回date2 與date1兩個日期之間的內插補點 date2-date1 

DateAdd (interval,number,date) --以interval指定的方式,加上number之後的日期 

DatePart (interval,date) ---傳回日期date中,interval指定部分所對應的整數值 

DateName (interval,date) --傳回日期date中,interval指定部分所對應的字元串名稱 

參數 interval的設定值如下:

值 縮 寫(Sql Server) Access 和 ASP 說明 

Year Yy yyyy 年 1753 ~ 9999 

Quarter Qq q 季 1 ~ 4 

Month Mm m 月1 ~ 12 

Day of year Dy y 一年的日數,一年中的第幾日 1-366 

Day Dd d 日,1-31 

Weekday Dw w 一周的日數,一周中的第幾日 1-7 

Week Wk ww 周,一年中的第幾周 0 ~ 51 

Hour Hh h 時0 ~ 23 

Minute Mi n 分鐘0 ~ 59 

Second Ss s 秒 0 ~ 59 

Millisecond Ms - 毫秒 0 ~ 999 

access 和 asp 中用date()和now()取得系統日期時間;其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,這些函數的用法也類似

舉例:

1.GetDate() 用于sql server :select GetDate()

2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')傳回值為 514592 秒

DateDiff('d','2005-07-20','2005-7-25 22:56:32')傳回值為 5 天

3.DatePart('w','2005-7-25 22:56:32')傳回值為 2 即星期一(周日為1,周六為7)

DatePart('d','2005-7-25 22:56:32')傳回值為 25即25号

DatePart('y','2005-7-25 22:56:32')傳回值為 206即這一年中第206天

DatePart('yyyy','2005-7-25 22:56:32')傳回值為 2005即2005年 

SQL Server DATEPART() 函數傳回 SQLServer datetime 字段的一部分。 

SQL Server DATEPART() 函數的文法是: 

DATEPART(portion, datetime)

其中 datetime 是 SQLServer datetime 字段和部分的名稱是下列之一: Ms for Milliseconds

Yy for Year

Qq for Quarter of the Year

Mm for Month

Dy for the Day of the Year

Dd for Day of the Month

Wk for Week

Dw for the Day of the Week

Hh for Hour

Mi for Minute

Ss for Second

--1.編寫函數,實作按照'年月日,星期幾,上午下午晚上'輸出時間資訊(2009年3月16日星期一下午)

select datename(yy,getdate()) + '年' +

       datename(mm,getdate()) + '月' + 

       datename(dd,getdate()) + '日' +

       datename(weekday,getdate()) +

       case when datename(hh,getdate()) < 12 then '上午' else '下午'end                                                                                                                          

--2.編寫函數,根據輸入時間。輸出該天是該年的第幾天

select datepart(dy,getdate())

--3.求出随機輸出字元‘a-z

select char(97+abs(checksum(newid()))%26)

select char(97+rand()*26)