1. 程式人生 > >SQL基本操作——日期函數

SQL基本操作——日期函數

rom 兩個 server tro ima sql efault from fault

SQL日期:當我們處理日期時,最難的任務恐怕是確保所插入的日期的格式,與數據庫中日期列的格式相匹配。只要數據包含的只是日期部分,運行查詢就不會出問題。但是,如果涉及時間,情況就有點復雜了。在討論日期查詢的復雜性之前,我們先來看看最重要的內建日期處理函數。

SQL Server 中最重要的內建日期函數:GETDATE() 、DATEPART()、DATEADD()、DATEDIFF()、CONVERT()

1、GETDATE() 函數從 SQL Server 返回當前的時間和日期。

--基本使用
SELECT GETDATE() AS CurrentDateTime
--創建帶有日期時間列 (OrderDate) 的 "Orders" 表
CREATE TABLE Orders ( OrderId int NOT NULL PRIMARY KEY, ProductName varchar(50) NOT NULL, OrderDate datetime NOT NULL DEFAULT GETDATE() )

請註意,OrderDate 把 GETDATE() 規定為默認值。結果是,當您在表中插入新行時,當前日期和時間自動插入列中。現在,我們希望在 "Orders" 表中插入一條記錄:

INSERT INTO Orders (ProductName) VALUES (Computer)

結果:

OrderId ProductName OrderDate
1 Computer 2008-12-29 16:25:46.635

2、DATEPART() 函數返回日期/時間的單獨部分,比如年、月、日、小時、分鐘等等。

語法:

DATEPART(datepart,date)

date 參數是合法的日期表達式。datepart 參數可以是下列的值:

技術分享

假設我們有下面這個 "Orders" 表:

OrderId ProductName OrderDate
1 Computer 2008-12-29 16:25:46.635

我們使用如下 SELECT 語句:

SELECT DATEPART(yyyy,OrderDate) AS
OrderYear, DATEPART(mm,OrderDate) AS OrderMonth, DATEPART(dd,OrderDate) AS OrderDay FROM Orders WHERE OrderId=1

結果:

OrderYear OrderMonth OrderDay
2008 12 29

3、DATEADD() 函數在日期中添加或減去指定的時間間隔。

語法:

DATEADD(datepart,number,date)

date 參數是合法的日期表達式。number 是您希望添加的間隔數;對於未來的時間,此數是正數,對於過去的時間,此數是負數。datepart 參數可以是上圖中的值。

我們利用上面的 "Orders" 表。現在,我們希望向 "OrderDate" 添加 2 天,這樣就可以找到付款日期。我們使用如下 SELECT 語句:

SELECT OrderId,DATEADD(day,2,OrderDate) AS OrderPayDate
FROM Orders

結果:

OrderId OrderPayDate
1 2008-12-31 16:25:46.635

4、DATEDIFF() 函數返回兩個日期之間的時間。

語法:

DATEDIFF(datepart,startdate,enddate)

startdate 和 enddate 參數是合法的日期表達式。datepart 參數可以是上圖中的值。使用如下 SELECT 語句:

SELECT DATEDIFF(hh,2008-12-29,2008-12-30) AS DiffDate

結果:

DiffDate
24

5、CONVERT() 函數是把日期轉換為新數據類型的通用函數。具體可以看上一篇文章

參考:SQL Date 函數

SQL基本操作——日期函數