DataView中的日期型字段筛选问题

dongzhou 2003-09-17 09:33:47

在DataView中有一日期型字段,如何筛选出其中一个月份的记录
...全文
381 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jn_sly 2003-09-19
  • 打赏
  • 举报
回复
DATEDIFF ( datepart , startdate , enddate )
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


startdate

是计算的开始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。

因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。

如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。

有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。

enddate

是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。


DATEPART ( datepart , date )
datepart

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

日期部分 缩写
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw
Hour hh
minute mi, n
second ss, s
millisecond ms


week (wk, ww) 日期部分反映对 SET DATEFIRST 作的更改。任何一年的 1 月 1 日定义了 week 日期部分的开始数字,例如:DATEPART(wk, 'Jan 1, xxxx') = 1,此处 xxxx 代表任一年。

weekday (dw) 日期部分返回对应于星期中的某天的数,例如:Sunday = 1、Saturday = 7。weekday 日期部分产生的数取决于 SET DATEFIRST 设定的值,此命令设定星期中的第一天。

date

是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。对 1753 年 1 月 1 日之后的日期用datetime 数据类型。更早的日期存储为字符数据。当输入 datetime 值时,始终将其放入引号中。因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。

如果只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049 (默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。
dongzhou 2003-09-19
  • 打赏
  • 举报
回复

不錯,謝謝!

我還是想知道哪個 DatePart()和DateDiff()怎麼用,直接寫的話會報錯
“表达式包含未定义的函数调用 DatePart()。”請高手指點?
newyouth 2003-09-19
  • 打赏
  • 举报
回复
dv.RowFilter = "字段名>='" + st.ToSring(yyyy-MM-dd) + "' and 字段名<'" + en.ToString(yyyy-MM-dd) + "'";
dongzhou 2003-09-19
  • 打赏
  • 举报
回复

查5月份的資料,代碼如下:
dv.RowFilter="DatePart(month,t0101)=5"; //t0101為日期型字段

運行提示如下:

""未处理的“System.Data.EvaluateException”类型的异常出现在 system.data.dll 中。

其他信息: 表达式包含未定义的函数调用 DatePart()。""

是不是還要打開個別名或空間才行。
dongzhou 2003-09-18
  • 打赏
  • 举报
回复
string s="5";

dv.RowFilter ="DateDiff(month,'"+s+"',t0101)=0"; 提示如下:


未处理的“System.Data.EvaluateException”类型的异常出现在 system.data.dll 中。

其他信息: 表达式包含未定义的函数调用 DateDiff()。

storm97 2003-09-18
  • 打赏
  • 举报
回复
还是没写对,sorry
正确的:
dv.RowFilter="DateDiff(month,'"+ s +"',字段名)=0";
storm97 2003-09-18
  • 打赏
  • 举报
回复
错了,应该是
dv.RowFilter="DateDiff(month,'"+ s +"')=0";
storm97 2003-09-18
  • 打赏
  • 举报
回复
string s=你的月份的值
dv.RowFilter="DataDiff(month,'"+ s +"')=0";
changezhong 2003-09-18
  • 打赏
  • 举报
回复
假设在DataView中有一日期型字段名为theDate
所选时间段为2003-8-1到2003-9-1
dv.RowFilter="theDate>='2003-8-1' and theDate<2003-9-1
"
土是土了点,不过很好用哈!
xixigongzhu 2003-09-18
  • 打赏
  • 举报
回复
dv.RowFilter="DatePart(month,t0101)=5";
dongzhou 2003-09-18
  • 打赏
  • 举报
回复

楼上兄台代码请写的完整些,我很菜
我这样写:dv.RowFilter=DatePart(month,t0101)=5; 提示出错,请指正
jjcccc 2003-09-17
  • 打赏
  • 举报
回复
假设在DataView中有一日期型字段名为theDate,要筛选出10月份的记录,则过滤表达式为:

DATEPART(month,theDate)=10

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧