1. 程式人生 > >http://blog.163.com/xxh_line/

http://blog.163.com/xxh_line/

1.取當前系統時間

1.1 MYSQL:NOW(),SYSDATE(),CURRENT_TIMESTAMP可取得當前日期時間,CURDATE(),CURRENT_DATE可取得當前日期,CURTIME(),CURRENT_TIME可取得當前時間,不包括日期部分

1.2 MSQLServer:取得當前日期時間的函式為GETDATE()

1.3 Oracle:當前時間戳:SYSTIMESTAMP,當前日期時間:SYSDATE,當前日期,當前時間:藉助TO_CHAR()對SYSDATE的值進行處理

         例如:SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;     //返回日期2012-06-28

                    SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL;     //返回日期10:01:56

2.日期增減

2.1 MYSQL:DATE_ADD()用於進行日期的加法運算,別名:ADDDATE(),也可用於進行減法運算,將expr為負值即可,語法:DATE_ADD(date,INTERVAL expr unit),date為待計算的日期,expr為待進行加法運算的增量,type為加法運算的單位

type引數值                                     expr引數的格式                                           說明
MICROSECOND                             數值型別                                       以微秒為計算單位
SECOND                                          數值型別                                        以秒為計算單位
MINUTE                                             數值型別                                        以分鐘為計算單位
HOUR                                                數值型別                                       以小時為計算單位
DAY                                                     數值型別                                        以天為計算單位
WEEK                                                數值型別                                        以周為計算單位
MONTH                                             數值型別                                         以月為計算單位
QUARTER                                        數值型別                                         以季度為計算單位
YEAR                                                 數值型別                                         以年為計算單位

SECOND_MICROSECOND    字串型別,格式為:SECONDS.     以秒、微秒為計算單位,要求expr引數必須

                                                  MICROSECONDS'       是“秒.微秒”的格式,比如“30.10”表示增加30秒10微秒。

MINUTE_MICROSECOND     字串型別,格式為:'MINUTES.  以分鐘、毫秒為計算單位,要求expr引數必須是

                                                   MICROSECONDS'     “分鐘.微秒”的格式,比如“30.10”表示增加30分鐘10微秒。

MINUTE_SECOND                  字串型別,格式為:'MINUTES:    以分鐘、秒為計算單位,要求expr引數必須是
                                                   SECONDS'                    “分鐘:秒”的格式,比如“30:10”表示增加30分鐘10秒。
HOUR_MICROSECOND     字串型別,格式為:  'HOURS.      以小時、微秒為計算單位,要求expr引數必須是
                                                MICROSECONDS'         “小時.微秒”的格式,比如“30.10”表示增加30小時10微秒。
HOUR_SECOND       字串型別,格式為:'HOURS:        以小時、分鐘、秒為計算單位,要求expr引數必須是
                                    MINUTES:SECONDS'    “小時:分鐘:秒”的格式,比如“1:30:10”表示增加1小時30分鐘10秒。
HOUR_MINUTE          字串型別,格式為:             以小時、秒為計算單位,要求expr引數必須是“小時:秒”的格式,
                                          HOURS:MINUTES'               比如“30:10”表示增加30小時10秒。
DAY_MICROSECOND        字串型別,格式為:       以天、微秒為計算單位,要求expr引數必須是“天.微秒”
                                       'DAYS.MICROSECONDS'         的格式,比如“30.10”表示增加30天10微秒。
DAY_SECOND       字串型別,格式為:       以天、時、分、秒為計算單位,要求expr引數必須是“天 小時:分鐘:秒”
                     'DAYSHOURS:MINUTES:SECONDS'     的格式,比如“1 3:28:36”表示增加1天3小時28分鐘36秒。
DAY_MINUTE     字串型別,格式為:            以天、小時、分鐘為計算單位,要求expr引數必須是“天 小時:分鐘”
                                      'DAYSHOURS:MINUTES'         的格式,比如“1 3:15”表示增加1天3小時15分鐘。
DAY_HOUR                字串型別,格式為:          以天、小時為計算單位,要求expr引數必須是“天 小時”的格式,
                                      'DAYS HOURS'                      比如“30 10”表示增加30天10小時。
YEAR_MONTH              字串型別,格式為:     以年、月為計算單位,要求expr引數必須是“年-月”的格式,
                                         YEARS-MONTHS'                  比如“2-8”表示增加2年8個月。

2.2 MSSQLServer:提供DATEADD(),語法:DATEADD (datepart , number, date ),date為待計算的日期,number制定了用於與 datepart 相加的值,datepart指定要返回新值的日期的組成部分,以下為可識別的日期部分及其縮寫:

取值                   別名               說明
year                   yy,yyyy              年份
quarter              qq,q                季度
month               mm,m            月份
dayofyear         dy,y              當年度的第幾天
day                    dd,d                 日
week                wk,ww         當年度的第幾周
weekday         dw,w              星期幾

hour                  hh                    小時
minute              mi,n                 分
second             ss,s                 秒

millisecond       ms                毫秒

2.3 Oracle:使用加號“+”來進行日期的加法運算,其計算單位為“天”,同理使用減號“-”則可以用來計算日期前的特定時間段的時間,使用加減運算我們可以很容易的實現以周、天、小時、分鐘、秒等為單位的日期的增減運算,不過由於每個月的天數是不同的,也就是在天和月之間不存在固定的換算率,所以無法使用加減運算實現以月為單位的計算,為此Oracle中提供了ADD_MONTHS()函式用於以月為單位的日期增減運算,ADD_MONTHS()函式的引數格式如下:ADD_MONTHS(date,number),其中引數date為待計算的日期,引數number為要增加的月份數,如果number為負數則表示進行日期的減運算

3.計算日期差額

3.1 MYSQL:使用DATEDIFF()函式用於計算兩個日期之間的差額,語法:DATEDIFF(date1,date2),DATEDIFF()函式只能計算兩個日期之間的天數差額,如果要計算兩個日期的周差額等就需要進行換算

3.2 MSSQLServer:提供了DATEDIFF()函式用於計算兩個日期之間的差額,它提供了一個額外的引數用於指定計算差額時使用的單位,其引數調
用格式如下:DATEDIFF ( datepart , startdate , enddate ),其中引數datepart為計算差額時使用的單位,可選值如下:

單位                     別名                       說明
year                    yy, yyyy                      年
quarter               qq, q                      季度
month                mm, m                    月
dayofyear           dy, y                     工作日
day                      dd, d                     天數
week                   wk, ww                   周
Hour                     hh                        小時
minute                  mi, n                   分鐘
second                ss, s                      秒
millisecond          ms                      毫秒

3.3 Oracle:使用減號運算子“-”,其計算結果為兩個日期之間的天數差

4.計算一個日期是星期幾

4.1 MYSQL:提供了DAYNAME()函式用於計算一個日期是星期幾,語法:DAYNAME(date),返回的是英文的日期表示法。

4.2 MSQLServer:提供了DATENAME()函式,這個函式可以返回一個日期的特定部分,且儘量用名稱來表述這個特定部分,其引數格式如:DATENAME(datepart,date),date為待計算日期,date 引數也可以是日期格式的字串;引數datepart指定要返回的日期部分的引數,其可選值如下:

可選值                       別名                說明
Year                        yy、yyyy             年份
Quarter                    qq, q                季度
Month                      mm, m            月份
Dayofyear                dy, y            每年的某一日
Day                          dd, d                日期
Week                    wk, ww              星期
Weekday                dw                   工作日
Hour                        hh                    小時
Minute                    mi, n                 分鐘
Second                   ss, s                  秒

Millisecond             ms                  毫秒

4.3 Oracle:提供了TO_CHAR()函式用於將資料轉換為字串型別,當針對時間日期型別資料進行轉換的時候,它接受兩個引數,其引數格式如:TO_CHAR(date,format),date為待轉換的日期,format為格式化字串,資料庫系統將按照這個字串對date進行轉換,格式化字串中可以採用如下的佔位符:

佔位符                說明
YEAR                 年份(英文拼寫),比如NINETEEN NINETY-EIGHT
YYYY                   4位年份,比如1998
YYY                    年份後3位,比如998
YY                      年份後2位,比如98
Y                        年份後1位,比如8
IYYY                   符合ISO標準的4位年份,比如1998
IYY                     符合ISO標準的年份後3位,比如998
IY                       符合ISO標準的年份後2位,比如98
I                         符合ISO標準的年份後1位,比如8
Q                       以整數表示的季度,比如1
MM                    以整數表示的月份,比如01
MON                 月份的名稱,比如2月
MONTH            月份的名稱,補足9個字元
RM                    羅馬錶示法的月份,比如VIII
WW                  日期屬於當年的第幾周,比如30
W                      日期屬於當月的第幾周,比如2
IW                     日期屬於當年的第幾周(按照ISO標準),比如30
D                       日期屬於周幾,以整數表示,返回值範圍為1至7
DAY                   日期屬於周幾,以名字的形式表示,比如星期五
DD                    日期屬於當月的第幾天,比如2
DDD                 日期屬於當年的第幾天,比如168
DY                     日期屬於周幾,以名字的形式表示,比如星期五
HH                    小時部分(12小時制)
HH12                小時部分(12小時制)
HH24               小時部分(24小時制)
MI                       分鐘部分
SS                     秒部分

SSSSS             自從午夜開始的秒數

5.取得日期的指定部分

5.1 MYSQL:DATE_FORMAT()函式用來將日期按照特定各是進行格式化,這個函式的引數格式如下:DATE_FORMAT(date,format),format為格式化字串,格式化字串中可以採用如下的佔位符:
佔位符                   說明
%a                         縮寫的星期幾(Sun..Sat)
%b                         縮寫的月份名(Jan..Dec)
%c                         數字形式的月份(0..12)
%D                        當月的第幾天,帶英文字尾(0th, 1st, 2nd, 3rd, ...)
%d                         當月的第幾天,兩位數字形式,不足兩位則補零(00..31)
%e                         當月的第幾天,數字形式(0..31)
%f                           毫秒
%H                        24小時制的小時 (00..23)
%h                        12小時制的小時(01..12)
%I                         12小時制的小時(01..12)
%i                          數字形式的分鐘(00..59)
%j                         日期在當年中的天數(001..366)
%k                        24進位制小時(0..23)
%l                        12進位制小時(1..12)
%M                      月份名(January..December)
%m                      兩位數字表示的月份(00..12)
%p                      上午還是下午(AM.. PM)
%r                        12小時制時間,比如08:09:29 AM
%S                       秒數(00..59)
%s                       秒數(00..59)
%T                       時間,24小時制,格式為hh:mm:ss
%U                      所屬周是當年的第幾周,週日當作第一天(00..53)
%u                       所屬周是當年的第幾周,週一當作第一天(00..53)
%V                       所屬周是當年的第幾周,週日當作第一天(01..53)
%v                       所屬周是當年的第幾周,週一當作第一天(01..53)
%W                     星期幾(Sunday..Saturday)
%w                      星期幾,數字形式(0=Sunday..6=Saturday)
%X                      本週所屬年,週日當作第一天
%x                       本週所屬年,週一當作第一天
%Y                       年份數,四位數字
%y                       年份數,兩位數字

5.2 MSSQLServer:使用DATENAME()函式,也可以提取日期的任意部分,用法同4.1,還提供了一個DATEPART()函式,這個函式也可以用來返回一個日期的特定部分,其格式如:DATEPART (datepart,date),datepart指定要返回的日期部分的引數,其可選值如下:
可選值              別名               說明
Year                 yy、yyyy          年份
Quarter              qq, q            季度
Month               mm, m         月份
Dayofyear         dy, y          每年的某一日
Day                   dd, d             日期
Week               wk, ww           星期
Weekday           dw              工作日
Hour                  hh                  小時
Minute               mi, n             分鐘
Second              ss, s              秒
Millisecond       ms               毫秒

5.3 Oracle:使用TO_CHAR()函式格式化日期的方法,使用它就可以提取日期的任意部分,用法同4.3