比如求得是最近这个月(与数据库里某一个表某个时间字段的比较,设这个表为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函数
帮助文档里的说明如下
那么要求最近这个月的数据就简单了
Sql语句为:select * from tab_example where dt_Compare>=dateadd(month,0,convert(char(8),getdate(),120)+'01') 就可以直接得到了
因为number是可以取负数的,那么要求最近的n个月,令number=-(n-1)就可以了
我以前用了一种很笨的方法实现
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)就可以了

浙公网安备 33010602011771号