sql日期和週末判斷

iSQlServer發表於2009-11-25
if datepart(day,getdate()) in (6,16,26or (@@DATEFIRST+DATEPART(Weekday,getdate())-1)%7 in (0,6)
begin
print '會員日'
end
else
begin 
print '非會員日'
end

 將每月6,16,26和週末作為會員日。

附上datepart用法,摘自sql2000幫助文件。 

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。為避免模糊,請使用四位數的年份。

有關時間值指定的更多資訊,請參見時間格式。有關日期指定的更多資訊,請參見 datetime 和 smalldatetime

返回型別

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-620541/,如需轉載,請註明出處,否則將追究法律責任。

相關文章