SQL Server取得當月第一天及最後一天

最近在寫報表時,需要讓 Reporting Service 可以按月定時發送報表給使用者,但,問題來了,要如何自動填入資料區間,讓SQL可以抓到正確的資料呢?

一開始,我用使用下列條件式進行:
...
AND YEAR(ApplyTime) = YEAR(DATEADD(MONTH, -1, GETDATE()))
AND MONTH(ApplyTime) = MONTH(DATEADD(MONTH, -1, GETDATE()))
...
不過,遇到資料量大時,資料要透過運算後才能獲得正確的結果,這樣的效果並不是很好....

後來,利用變數宣告的方式,似乎更容易了(至少我是這麼認為啦 XD)
DECLARE @StartTime datetime = DATEADD(day,-DAY(GETDATE())+1, CONVERT(datetime,CONVERT(date, GETDATE())))
DECLARE @EndTime datetime = DATEADD(ss, -1, DATEADD(m,1,@StartTime))
...
AND ApplyTime between @StartTime and @EndTime
...

不過,一般來說,都是取回前一個月的資料居多啦,因此,上面的@StartTime只要做些修改即可:
DECLARE @StartTime datetime = DATEADD(day,-DAY(GETDATE())+1, CONVERT(datetime, CONVERT(date, DATEADD(MM, -1,GETDATE()))))


2010-01-19 13:00:28

I said something before.....
簡單的對DataTable做Distinct 2009-09-21 10:18
使用 svcutil 編譯 WCF 錯誤解法 2009-07-09 19:59
PHP加載MSSQL函式庫 2008-10-20 20:54
資料庫抓取固定筆數資料 2008-09-19 10:27
PHP與ASP共存 2008-07-05 22:03
CheckedBoxList的設定與取得勾選值 2008-06-21 08:21
在PHP中保護檔案下載位址 2008-04-04 17:49
MSSQL資料轉移至MySQL 2008-04-04 16:33
改變.NET Windows Forms的TabControl頁籤顏色 2008-04-02 16:08
DataGridView排序後,如何抓取綁定資料的正確索引值 2008-03-21 09:37
郵件回傳瀏覽記錄訊息 2008-02-13 23:21
PHP連結ASP.NET的Web Service 2007-12-25 23:15
HTTP服務在SELinux上的設定 2007-11-06 23:31
MindMeister - 心智圖線上編輯器 2007-04-30 00:41