搜尋本站文章

2008-02-20

系統日期時間函數: CURRENT_TIMESTAMP , {fn NOW()} , GETDATE()


系統日期時間函數: CURRENT_TIMESTAMP , {fn NOW()} , GETDATE()

在 SQL Server 上,可以用來傳回目前的系統日期和時間的函數,直接引用有以下數種:
(1)GETDATE()
這可能是目前最常用的 T-SQL 函數,以 SQL Server 2005 的 datetime 值標準內部格式,傳回目前的系統日期和時間。
GETDATE 是不具決定性的函數。參考這個資料行的檢視和運算式,是無法編製索引的。
日期函數可以用於 SELECT 陳述式選取清單或查詢的 WHERE 子句中。
在設計報表時,您可以利用 GETDATE 來列印每次產生報表的目前日期和時間。GETDATE 在追蹤活動時也很有用,例如,記錄帳戶進行交易的時間。

(2)CURRENT_TIMESTAMP
這是 ANSI SQL 標準所提供的函數,與 T-SQL 函數:GETDATE() 功能是一樣的。
CURRENT_TIMESTAMP 是不具決定性的函數。參考這個資料行的檢視和運算式,是無法編製索引的。
日期函數可以用於 SELECT 陳述式選取清單或查詢的 WHERE 子句中。
在設計報表時,您可以利用 CURRENT_TIMESTAMP 來列印每次產生報表的目前日期和時間。CURRENT_TIMESTAMP 在追蹤活動時也很有用,例如,記錄帳戶進行交易的時間。


(3){fn NOW()}
這是 ODBC canonical function(ODBC 1.0),回傳日期與時間,如同 ANSI SQL 的 timestamp。


請參考以下的資訊:
ODBC Escape Sequences
http://msdn2.microsoft.com/en-us/library/ms711838(VS.85).aspx

Time, Date, and Interval Functions
http://msdn2.microsoft.com/en-us/library/ms714639(VS.85).aspx

SQL Syntax Recommendations
http://msdn2.microsoft.com/en-us/library/aa174492(SQL.80).aspx

請參考以下的範例:


SELECT CURRENT_TIMESTAMP N'CURRENT_TIMESTAMP',
{fn NOW()} N'{fn NOW()}',
GETDATE() N'GETDATE()'





SELECT {fn CURRENT_TIMESTAMP()} N'日期與時間',
{fn CURRENT_DATE()} N'日期',
{fn CURRENT_TIME()} N'時間';





小結

CURRENT_TIMESTAMP , {fn NOW()} , GETDATE(),都是用來傳回目前的系統日期和時間的函數,也應該沒有效能上的差異。
在早期,ANSI SQL 與 T-SQL 函數尚未不完備時,ODBC 泛用型函數是一候選用函數。
一般使用的建議是,除非 T-SQL 或是 ANSI SQL 都沒提供此功能時,並且應用程式都是僅用 ODBC 驅動程式連線時,才會考慮使用的。