SQL查詢一個月第一天/最後一天

SQL查詢一個月第一天/最後一天

1.一個月第一天的
Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
2.本週的星期一
Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
3.一年的第一天
Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
4.季度的第一天
Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
5.當天的半夜
Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
6.上個月的最後一天
Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
7.去年的最後一天
Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
8.本月的最後一天
Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
9.本年的最後一天
Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
10.本月的第一個星期一
select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)

附:

SQL Server DATEADD() 函數

定義和用法
DATEADD() 函數在日期中添加或減去指定的時間間隔。

語法
DATEADD(datepart,number,date)
date 參數是合法的日期表達式。number 是您希望添加的間隔數;對於未來的時間,此數是正數,對於過去的時間,此數是負數。
datepart 參數可以是下列的值:

datepart 縮寫
年 yy, yyyy
季度 qq, q
月 mm, m
年中的日 dy, y
日 dd, d
周 wk, ww
星期 dw, w
小時 hh
分鐘 mi, n
秒 ss, s
毫秒 ms
微妙 mcs
納秒 ns
實例

假設我們有下面這個 "Orders" 表:
OrderId ProductName OrderDate
1 'Computer' 2008-12-29 16:25:46.635

現在,我們希望向 "OrderDate" 添加 2 天,這樣就可以找到付款日期。
我們使用如下 SELECT 語句:
SELECT OrderId,DATEADD(day,2,OrderDate) AS OrderPayDate
FROM Orders
結果:
OrderId OrderPayDate
1 2008-12-31 16:25:46.635

 

SQL Server DATEDIFF() 函數

定義和用法
DATEDIFF() 函數返回兩個日期之間的天數。

語法
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 參數是合法的日期表達式。
datepart 參數可以是下列的值:

datepart 縮寫
年 yy, yyyy
季度 qq, q
月 mm, m
年中的日 dy, y
日 dd, d
周 wk, ww
星期 dw, w
小時 hh
分鐘 mi, n
秒 ss, s
毫秒 ms
微妙 mcs
納秒 ns

實例
例子 1
使用如下 SELECT 語句:
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate
結果:
DiffDate
1
例子 2
使用如下 SELECT 語句:
SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate
結果:
DiffDate
-1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章