在VB.NET视图中对日期字段进行处理

xiaolinvfp 2010-06-08 09:06:33
日期1是不带时间的,日期2是带时间格式的,所以即使两个日期的值为同一天,也是不相等的,现在要比较的就是以前面日期1(不带时间格式)与日期2进行比较.在视图中有什么函数可以处理日期字段?(即对日期时间型字段转换为日期型)
objTable.DefaultView.RowFilter="日期1<>日期2"

在SQL中可以这样转换CONVERT(CHAR(10),日期1,120)<>CONVERT(CHAR(10),日期2,120),但现在是要在VB.NET中的视图中,因为下载的时候日期1和日期2字段都需要保持原来的值,我目前的作法是,将日期2字段在SQL中另外转换CONVERT(CHAR(10),日期2,120) AS 日期3产生一个新字段,再在VB.NET中的视图中用日期1与日期3进行比较,但这样多出了日期3这列数据,我现在想去掉这一列数据,并在VB.NET中的视图中也可以比较.
...全文
141 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaolinvfp 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 fina1982 的回复:]
虽然它们视图格式不用 但它们的值其实还是相同的(都是时间),所以所先将2个只转换为同一类型,在比较就可以了
[/Quote]

前提是两个字段,一个为日期型,一个为日期时间型,各有用处,前提是不想再将日期时间型在SQL语句下载数据时就转换成日期型(因为这样得加多一列数据,不加数据我又没了日期时间型的数据)

从SQL下载数据下来后,一个为日期型,一个为日期时间型,要在视图中对这两个字段比较年月日(不要时间)的值.(前提是要在视图中objTable.DefaultView.RowFilter,不要说CDATE,FORMAT这些函数,这些在视图中不行)
xiaolinvfp 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xiaolinvfp 的回复:]
引用 11 楼 dbspro 的回复:
楼主的表述我是不太明白,不过楼主这句话:即对日期时间型字段转换为日期型,我是不是可以这样理解,即将2000-01-01 00:00:00转换成2000-01-01,如果是这样的话,可以用下面的代码。

Format(YourDateTime,"yyyy-MM-dd"),其中YourDateTime是你的日期时间变量,当然必须是DateTime型的变量,……
[/Quote]

objTable.DefaultView.RowFilter=""要在视图里转换,测试后再回答,呵呵.
fina1982 2010-06-22
  • 打赏
  • 举报
回复
虽然它们视图格式不用 但它们的值其实还是相同的(都是时间),所以所先将2个只转换为同一类型,在比较就可以了
xiaolinvfp 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 dbspro 的回复:]
楼主的表述我是不太明白,不过楼主这句话:即对日期时间型字段转换为日期型,我是不是可以这样理解,即将2000-01-01 00:00:00转换成2000-01-01,如果是这样的话,可以用下面的代码。

Format(YourDateTime,"yyyy-MM-dd"),其中YourDateTime是你的日期时间变量,当然必须是DateTime型的变量,如果是字符串的话,你还应该将它转换成Dat……
[/Quote]

请认真看一下,我要在RowFilter内对字段进行转换处理,RowFilter里无法使用Format函数
objTable.DefaultView.RowFilter
xiagirl 2010-06-22
  • 打赏
  • 举报
回复
可以用 CDate(YourDateTime).ToShortDateString
冷锋 2010-06-21
  • 打赏
  • 举报
回复
楼主的表述我是不太明白,不过楼主这句话:即对日期时间型字段转换为日期型,我是不是可以这样理解,即将2000-01-01 00:00:00转换成2000-01-01,如果是这样的话,可以用下面的代码。

Format(YourDateTime,"yyyy-MM-dd"),其中YourDateTime是你的日期时间变量,当然必须是DateTime型的变量,如果是字符串的话,你还应该将它转换成DateTime型变量,转换的话用Ctype(YourDateTime,DateTime)
xiaolinvfp 2010-06-21
  • 打赏
  • 举报
回复
继续顶
wubingqing 2010-06-11
  • 打赏
  • 举报
回复
学习学习
xiaolinvfp 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiaolinvfp 的回复:]
引用 1 楼 yanchenyu 的回复:
学习学习


请看清要求,是要在DefaultView中对日期型字段进行转换处理.
[/Quote]

试过都不行
xiaolinvfp 2010-06-11
  • 打赏
  • 举报
回复
我顶上去
wangweicai 2010-06-09
  • 打赏
  • 举报
回复
直接用objTable.DefaultView.RowFilter=“CONVERT(CHAR(10),日期1,120)<>CONVERT(CHAR(10),日期2,120)“不行吗?
那你试试objTable.DefaultView.RowFilter=“left(to_char(日期1),10)<>left(to_char(日期2),10)”看看行不行。
yanchenyu 2010-06-08
  • 打赏
  • 举报
回复
学习学习
xiaolinvfp 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yanchenyu 的回复:]
学习学习
[/Quote]

请看清要求,是要在DefaultView中对日期型字段进行转换处理.
xiaolinvfp 2010-06-08
  • 打赏
  • 举报
回复
DefaultView即DataTable的自定义视图
wangweicai 2010-06-08
  • 打赏
  • 举报
回复
不太明白视图是指的什么,但是如果已经取出来值了,可以把它转为字符串,然后再截取日期部分进行比较。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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