iT邦幫忙

DAY 2
12

T-SQL 應用之美系列 第 2

使用 T-SQL 找出特定日期之當年的第一天

分別以電腦目前時間與某個特定的日期作為基準點,使用 DATEADD 與 DATEEIFF() 函數去找出特定日期之當年的第一天。
先使用 getdate() 函數取得電腦目前的日期和時間,搭配 DATEADD與 DATEEIFF() 這兩個函數,並指定適當的日期計算單位,就可以推算出本年第一天的日期,此外,更進一步使用 CAST() 與 CONVERT() 函數轉換日期的格式,使其顯示不同精確度的結果:

-- 以電腦目前的日期和時間為基準點
-- 精確到毫秒
SELECT DATEADD(year, DATEDIFF(year, '', getdate()), '') AS [本年的第一天(精確到毫秒)]

-- 使用 CAST 轉換日期輸出的格式
SELECT CAST(DATEADD(year, DATEDIFF(year, '', getdate()), '') AS VARCHAR(20)) AS [本年的第一天(僅到分)]

-- 使用 CONVERT 轉換日期輸出的格式
SELECT CONVERT(VARCHAR(20), DATEADD(year, DATEDIFF(year, '', getdate()), ''), 101) AS [本年的第一天(僅到日)]

執行結果如下:

下面的程式碼則是以 2000 年 2 月 12 日這個特定的日期為基準點,推算出當年第一天的日期,同樣的也使用 CAST() 與 CONVERT() 函數轉換日期的格式,使其顯示不同精確度的結果:

-- 以 2000 年 2 月 12 日為基準點
-- 精確到毫秒
SELECT DATEADD(year, DATEDIFF(year, '', '2000/2/12'), '') AS [2000年的第一天(精確到毫秒)]

-- 使用 CAST 轉換日期輸出的格式
SELECT CAST(DATEADD(year, DATEDIFF(year, '', '2000-02-12'), '') AS VARCHAR(20)) AS [2000年的第一天(僅到分)]

-- 使用 CONVERT 轉換日期輸出的格式
SELECT CONVERT(VARCHAR(20), DATEADD(year, DATEDIFF(year, '', '02-12-2000'), ''), 101) AS [2000年的第一天(僅到日)]

執行結果如下:

附註:
程式碼中的 year 代表的意思是以「年」為計算日期的單位,我們可以寫成 yyyy 或是 yy


上一篇
使用 getdate() 函數找出本月第一天
下一篇
使用 T-SQL 找出特定日期之當季的第一天
系列文
T-SQL 應用之美30

1 則留言

0
kuochiahao
iT邦研究生 1 級 ‧ 2008-09-03 09:51:16

謝謝分享

我要留言

立即登入留言