比如求得是最近这个月(与数据库里某一个表某个时间字段的比较,设这个表为tab_example,设这个字段为dt_Compare)的数据.

我以前用了一种很笨的方法实现
Sql语句为
select *,year(dt_Compare)*12+month(dt_Compare) as dateCompare from tab_example

然后得到这个sql的dataview(设为dv),

最后是dv.RowFilter = "dateCompare =" & GetNowTotalMonth.ToString & "

其中GetNowTotalMonth:
Friend Function GetNowTotalMonth() As Integer
        
Return DateTime.Now.Year * 12 + Now.Month
    
End Function


今天发现Sql里有个dateadd函数
帮助文档里的说明如下

DATEADD

在向指定日期加上一段时间的基础上,返回新的 datetime 值。

语法

DATEADD ( datepart , number, date )

参数

datepart

是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。

日期部分 缩写
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms

那么要求最近这个月的数据就简单了

Sql语句为:select  * from tab_example where  dt_Compare>=dateadd(month,0,convert(char(8),getdate(),120)+'01') 就可以直接得到了

因为number是可以取负数的,那么要求最近的n个月,令number=-(n-1)就可以了
posted on 2005-11-24 10:08  与雪共舞  阅读(417)  评论(0编辑  收藏  举报