iT邦幫忙

DAY 1
18

T-SQL 應用之美系列 第 1

使用 getdate() 函數找出本月第一天

有時候我們會需要以某個特定的日期作為基準點,去推算出另外一個日期,這篇文章就是以使用 getdate() 函數去找出本月第一天的日期。
getdate() 函數是用來取得電腦目前的日期和時間,再搭配 DATEADD與 DATEEIFF() 這兩個函數之後,就可以推算出本月第一天的日期,我們更進一步使用 CAST() 與 CONVERT() 函數轉換日期的格式。

茲將程式碼列出如下:

-- 精確到毫秒
SELECT DATEADD(mm, DATEDIFF(mm, '', getdate()), '') AS [本月第一天(精確到毫秒)]

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

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

執行結果如下:

本篇的重點在於找出本月的第一天,因此相關的格式轉換,譬如換掉日期分隔符號就不談了

在 vincent118 的建議下,再加上以 2000年2月12日這個特定的日期作為基準點,去推算出 2000年2月的第一天之日期:

-- 精確到毫秒
SELECT DATEADD(mm, DATEDIFF(mm, '', '2000/2/12'), '') AS [2000年2月的第一天(精確到毫秒)]

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

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

執行結果如下:

附註:
程式碼中的 mm 代表的意思是以「月」為計算日期的單位,我們可以寫成 month 或是縮寫成 m


下一篇
使用 T-SQL 找出特定日期之當年的第一天
系列文
T-SQL 應用之美30

2 則留言

0
vincent118
iT邦高手 5 級 ‧ 2008-09-02 09:38:09

alexc,
你分享真棒。
但是,
"需要以某個特定的日期作為基準點,去推算出另外一個日期"
如果可以將這個範例也些出來就更棒了。

alexc iT邦高手 1 級 ‧ 2008-09-02 18:50:44 檢舉

謝謝您的建議,已經加上以某個特定的日期作為基準點的說明了

0
kuochiahao
iT邦研究生 1 級 ‧ 2008-09-02 15:59:42

謝謝分享

我要留言

立即登入留言