SQLServer數據庫中獲取每月第一天和最後天的方法以及擴展

今天在做開發的時候碰到了一個問題,需求是這樣的:根據年份以及月份兩個信息來獲取數據庫中的相應的所有訂單概要,那麼問題來了,數據庫中的日期格式是datetime,而且數據庫中的數據是用getdate函數得來的,也就是說是帶着時間的,並不是單純的日期,而從網頁上的表單中獲取的年份和月份只是兩個數字,怎麼在數據庫中操縱這兩個數字類型的變量來查詢到當月的所有訂單呢?

剛開始碰到這個問題的時候,我的第一個想法就是用模糊查詢,將從網頁上獲取的年份和月份拼成一個字符串,然後利用模糊查詢來進行查找,後來發現這樣是行不通的,因爲將年份和月份拼接起來的時候是一個字符串,在字符串後加正則表達式再進行查詢是不管用的,因爲查詢日期同樣也需要一個date類型的變量,所以並不能進行成功的查詢,後來通過查閱網上的一些資料,終於找到了解決辦法,下面先說最簡單也是符合常規的思維習慣的方法:

<span style="font-size:14px;">@year varchar(4),
@month varchar(2)

declare @str varchar(10) --聲明一個字符串用來拼接
declare @firstDay smalldatetime
declare @lastDay smalldatetime
 set @str=@year+'-'+@month+'-1' --將@str拼接成當月的第一天的字符串型形式
--將其轉換成smalldatetime類型就可以得到月份的第一天
@firstDay=convert(smalldatetime,@str)
--得到月份的第一天就可以利用函數來獲得月份的最後一天
@lastDay=dateadd(d,-1,dateadd(m,1,@firstDay))</span>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章