SQL Server 裡的日期和時間函數,因為在這方面總是出問題,所以總結一下,本人主要用到的是DATEPART(month, GETDATE()) ,這個東西在ACCESS裡可以直接day(now())就可以,可惜,SQL Server裡的day()是不支援參數的.
SQL Server 裡的日期和時間函數
這些純量涵式對日期和時間輸入值執行操作,並返回一個字串、數字值或日期和時間值。
下表列出日期和時間函數以及它們的確定性屬性。
函數 |
確定性 |
DATEADD |
具有確定性 |
DATEDIFF |
具有確定性 |
DATENAME |
不具有確定性 |
DATEPART |
除了用作 DATEPART (dw, date) 外都具有確定性。dw 是工作日的日期部分,取決於由設定每周第一天的 SET DATEFIRST 所設定的值。 |
DAY |
具有確定性 |
GETDATE |
不具有確定性 |
GETUTCDATE |
不具有確定性 |
MONTH |
具有確定性 |
YEAR |
具有確定性 |
確定性函數和非確定性函數
所有的函數都是確定性或非確定性:
- 在使用特定的輸入值集調用確定性函數的任何時候,它們總是返回相同的結果。
- 在每次使用特定的輸入值集調用非確定性函數時,它們可能返回不同的結果。
函數是否為確定性函數或非確定性函數稱為函數的確定性。
例如,DATEADD 內建函數是確定性函數,因為對於其三個參數的任何給定參數值集總是返回相同的結果。GETDATE 不是確定性函數,因為總是使用相同的參數喚醒調用它,而它在每次執行時返回結果都不同。
列印出 pubs 資料庫中標題的時間結構的列表。此時間結構表示當前發布日期加上 21 天。
USE pubsGOSELECT DATEADD(day, 21, pubdate) AS timeframeFROM titlesGO
確定在 pubs 資料庫中標題發布日期和當前日期間的天數。
USE pubsGOSELECT DATEDIFF(day, pubdate, getdate()) AS no_of_daysFROM titlesGO
從 GETDATE 返回的日期中提取月份名。
SELECT DATENAME(month, getdate()) AS 'Month Name'
GETDATE 函數返回當前日期;然而,比較時並不總是需要完整的日期資訊(通常只是對日期的一部分進行比較)。
SELECT DATEPART(month, GETDATE()) AS 'Month Number'
日期部分 |
縮寫 |
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 |
以上這個表如果你會的語言多的話可能會覺得太亂了,
各種語言有些地方是不一樣的,但不知道您有沒有發現,
不管什麼語言,
他們都可以直接用全稱而不必非要用縮寫.這個我比較喜歡,什麼時候不會寫就直接用全稱.
原創作者:柳永法(yongfa365)'Blog