Sql Server 日期函式

iSQlServer發表於2010-03-01

1.一個月第一天的
複製  儲存Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
2.本週的星期一
複製  儲存Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
3.一年的第一天
複製  儲存Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
4.季度的第一天
複製  儲存Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
5.當天的半夜
複製  儲存Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
6.上個月的最後一天
複製  儲存Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
7.去年的最後一天
複製  儲存Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
8.本月的最後一天
複製  儲存Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
9.本年的最後一天
複製  儲存Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
10.本月的第一個星期一
複製  儲存select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0) 
返回當前日期和時間

通過函式GETDATE(),你可以獲得當前的日期和時間。函式GETDATE()可以用來作為DATEDIME型欄位的預設值。這對插入記錄時保 存當時的時間是有用的。要建立一個表,其中的記錄包含有當前的日期和時間,可以新增一個DATETIME型欄位,指定其預設值為函式GETDATE()的 返回值,就象這樣:
複製  儲存Create TABLE site_log (
username VARCHAR(40),

 

以下是具體函式明細:

 

DATEADD
在向指定日期加上一段時間的基礎上,返回新的 datetime 值。

語法
DATEADD ( interval , number, date )
將一個日期加上一段期間後的日期。 interval :設定一個日期( Date )所加上的一段期間的單位。譬如 interval ="d" 表示 number的單位為日。 interval    的設定值如下:
設定 描述
yyyy 年Year
q 季Quarter
m 月Month
y 一年的日數
d 日Day
w 一週的日數
ww 周Weekday
h 時Hour
n 分鐘Minute
s 秒Second

number :數值表示式,設定一個日期所加上的一段期間,可為正值或負值,正值表示加(結果為 date 以後的日期),負值表示減(結果為 date 以前的日期)。
date :待加減的日期。
例子: DateAdd ( "m" , 1 , "31-Jan-98")
結果: 28-Feb-98
說明:將日期 31-Jan-98 加上一個月,結果為 28-Feb-98 而非 31-Fe-98 。
例子: DateAdd ( "d" , 20 , "30-Jan-99")
結果: 1999/2/9
說明:將一個日期 30-Jan-99 加上 20 天后的日期。

DATEDIFF
返回跨兩個指定日期的日期和時間邊界數。

語法
DATEDIFF ( interval , startdate , enddate )
計算兩個日期之間的期間。
interval :設定兩個日期之間的期間計算之單位。譬如 interval ="m" 表示計算的單位為月。 interval 的設定值如:  
日期部分 縮寫
year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh,h
minute mi, n
second ss, s
millisecond ms

startdate    ,enddate :計算期間的兩個日期表示式,若 enddate 較早,則兩個日期之間的期間結果為正值;若 startdate    較早, 則結果為負值。
FW :設定每週第一天為星期幾, 若未設定表示為星期天。 >FW 的設定值如下:
0 使用 >API 的設定值。
1 星期天
2 星期一
3 星期二
4 星期三
5 星期四
6 星期五
7 星期六
FY :設定一年的第一週, 若未設定則表示一月一日那一週為一年的第一週。 >FY 的設定值如下:
0 使用 >API 的設定值。
1 一月一日那一週為一年的第一週
2 至少包括四天的第一週為一年的第一週
3 包括七天的第一週為一年的第一週
例子: DateDiff ("d","25-Mar-99 ","30-Jun-99 ")
結果: 97
說明:顯示兩個日期之間的期間為 97 天


GETDATE
datetime 值的 Microsoft® SQL Server™ 標準內部格式返回當前系統日期和時間。
語法

GETDATE ( )

返回型別

datetime

註釋

日期函式可用在 SELECT 語句的選擇列表或用在查詢的 WHERE 子句中。

在設計報表時,GETDATE 函式可用於在每次生成報表時列印當前日期和時間。GETDATE 對於跟蹤活動也很有用,諸如記錄事務在某一帳戶上發生的時間。

示例 A. 用 GET DATE 返回當前日期和時間

下面的示例得出當前系統日期和時間:

SELECT GETDATE()
GO

下面是結果集:

-------------------------
July 29 1998     2:50      PM
(1 row(s) affected)
B. 在 CREATE TABLE 語句中使用 GETDATE

下面的示例建立 employees 表並用 GETDATE 給出員工僱傭時間的預設值。

USE pubs
GO
CREATE TABLE employees
(
emp_id char(11) NOT NULL,
emp_lname varchar(40) NOT NULL,
emp_fname varchar(20) NOT NULL,
emp_hire_date datetime DEFAULT GETDATE(),
emp_mgr varchar(30)
)
GO


DATENAME
返回代表指定日期的指定日期部分的字串。

語法
DATENAME ( datepart , date )
引數

datepart

是指定應返回的日期部分的引數。下表列出了 Microsoft® SQL Server™ 識別的日期部分和縮寫。

日期部分 縮寫
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

weekday (dw) 日期部分返回星期幾(星期天、星期一等)。

是返回 datetimesmalldatetime 值或日期格式字串的表示式。對 1753 年 1 月 1 日之後的日期用datetime 資料型別。更早的日期儲存為字元資料。當輸入 datetime 值時,始終將其放入引號中。因為 smalldatetime 只精確到分鐘,所以當用 smalldatetime 值時,秒和毫秒總是 0。
    如果只指定年份的最後兩位數字,則小於或等於 two digit year cutoff 配置選項的值的最後兩位數字的值所在世紀與截止年所在世紀相同。大於該選項的值的最後兩位數字的數字所在世紀為截止年所在世紀的前一個世紀。例如,如果 two digit year cutoff 為 2050(預設),則 49 被解釋為 2049,50 被解釋為 1950。為避免模糊,請使用四位數字的年份。
返回型別

nvarchar

註釋

SQL Server 自動在字元和 datetime 值間按需要進行轉換,例如,當將字元值與 datetime 值進行比較時。

示例

此示例從 GETDATE 返回的日期中提取月份名。

SELECT DATENAME(month, getdate()) AS 'Month Name'

下面是結果集:

Month Name
------------------------------
February  
Day( 日期的字串或表示式 )
返回代表指定日期的天的日期部分的整數。
語法

DAY ( date )

引數

date

型別為 datetimesmalldatetime 的表示式。

返回型別

int

註釋

此函式等價於 DATEPART(dd, date)。

示例

此示例返回從日期 03/12/1998 後的天數。

SELECT DAY('03/12/1998') AS 'Day Number'
GO

下面是結果集:

Day Number
------------
12

在此示例中,以數字表示日期。注意:Microsoft® SQL Server™ 將 0 解釋為 01/01/1900。

SELECT MONTH(0), DAY(0), YEAR(0)

下面是結果集。

----- ------ ------
1       1        1900

例子: Day(" 12/1/1999 ")
結果: 1

MONTH

返回代表指定日期月份的整數。

語法

MONTH ( date )

引數

date

返回 datetimesmalldatetime 值或日期格式字串的表示式。僅對 1753 年 1 月 1 日後的日期使用 datetime 資料型別。

返回型別

int

註釋

MONTH 等價於 DATEPART(mm, date)。

datetime 值包含在引號中。對於早期日期,可將其儲存為字元資料。

Microsoft® SQL Server™ 認可各種日期樣式。

示例

下面的示例從日期 03/12/1998 中返回月份數。

SELECT "Month Number" = MONTH('03/12/1998')
GO

下面是結果集:

Month Number
------------
3

下例用數字指定日期。注意:SQL Server 將 0 解釋為 01/01/1900。

SELECT MONTH(0), DAY(0), YEAR(0)

下面是結果集。

----- ------ ------
1       1        1900  

YEAR

返回表示指定日期中的年份的整數。

語法

YEAR ( date )

引數

date

datetimesmalldatetime 型別的表示式。

返回型別

int

註釋

此函式等價於 DATEPART(yy, date)。

示例

下例從日期 03/12/1998 中返回年份數。

SELECT "Year Number" = YEAR('03/12/1998')
GO

下面是結果集:

Year Number
------------
1998

下例用數字指定日期。注意:Microsoft® SQL Server™ 資料庫將 0 解釋為 1900 年 1 月 1 日。

SELECT MONTH(0), DAY(0), YEAR(0)

下面是結果集:

----- ------ ------

1       1        1900

DATEPART

返回代表指定日期的指定日期部分的整數。

語法

DATEPART ( datepart , date )

引數

datepart

是指定應返回的日期部分的引數。下表列出了 Microsoft® SQL Server™ 識別的日期部分和縮寫。

日期部分 縮寫
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

week (wk, ww) 日期部分反映對 SET DATEFIRST 作的更改。任何一年的 1 月 1 日定義了 week 日期部分的開始數字,例如:DATEPART(wk, 'Jan 1, xxxx') = 1,此處 xxxx 代表任一年。

weekday (dw) 日期部分返回對應於星期中的某天的數,例如:Sunday = 1、Saturday = 7。weekday 日期部分產生的數取決於 SET DATEFIRST 設定的值,此命令設定星期中的第一天。

date

是返回 datetimesmalldatetime 值或日期格式字串的表示式。對 1753 年 1 月 1 日之後的日期用datetime 資料型別。更早的日期儲存為字元資料。當輸入 datetime 值時,始終將其放入引號中。因為 smalldatetime 只精確到分鐘,所以當用 smalldatetime 值時,秒和毫秒總是 0。

如果只指定年份的最後兩位數字,則小於或等於"兩位數年份截止期"配置選項的值的最後兩位數字的數字所在世紀與截止年所在世紀相同。大於該選項的值的最後兩位數字的數字所在世紀為截止年所在世紀的前一個世紀。例如,如果 two digit year cutoff 為 2049 (預設),則 49 被解釋為 2049,2050 被解釋為 1950。為避免模糊,請使用四位數的年份。

返回型別

int

註釋

DAY、MONTH、和 YEAR 函式分別是 DATEPART(dd, date)、DATEPART(mm, date)、和 DATEPART(yy, date) 的同義詞。

示例

GETDATE 函式返回當前日期;然而,比較時並不總是需要完整的日期資訊(通常只是對日期的一部分進行比較)。此示例顯示 GETDATE 及 DATEPART 的輸出。

SELECT GETDATE() AS 'Current Date'
GO

下面是結果集:

Current Date
---------------------------
Feb 18 1998 11:46PM
SELECT DATEPART(month, GETDATE()) AS 'Month Number'
GO

下面是結果集:

Month Number
------------
2

此示例假設日期是 5 月 29 日。

SELECT DATEPART(month, GETDATE())
GO

下面是結果集:

-----------
5
(1 row(s) affected)

在此示例中,以數字表示日期。注意:SQL Server 將 0 解釋為 01/01/1900。

SELECT DATEPART(m, 0), DATEPART(d, 0), DATEPART(yy, 0)

下面是結果集:

----- ------ ------
1       1        1900

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-628256/,如需轉載,請註明出處,否則將追究法律責任。

相關文章