vb DTPicker查看某个时间段的问题

用vb实现查看某一天某个时间段的数据
比如选择
dtpicker1为2014年5月1日
dtpicker2为2014年5月1日
dtpicker3为00:00:00
dtpicker4为12:00:00
用检查框选中以后
点按钮就可以查看到2014年5月1日0点到12点数据

这个问题我已经解决了
代码如下
Adodc1.RecordSource = "select * from dbo.Table_tl where cdate >= '" & Format(DTPicker1.Value, "yyyymmdd") & "'and ctime >= '" & Format(DTPicker3.Value, "HhMmSs") & "'and cdate <= '" & Format(DTPicker2.Value, "yyyymmdd") & " 'and ctime<= '" & Format(DTPicker4.Value, "HhMmSs") & " ' "
但是发现了两个问题
1.。。我如果选择2014年5月1日 0点到6点的数据
但是数据库里如果有6点30分的数据也能看到
我明明用的是 ctime<= dtpicker4.value按说应该是0点到6点前的数据
这是怎么回事?
2.。。我如果选择2014年5月1日 0点到5月2日6点数据
数据库显示的反而是5月1日0点到6点的数据,5月2日0点到6点的数据
中间5月1日6点到第二天5月2日0点前的数据就看不到了
这是怎么回事??
求大神解答

我会追加50财富值,谢谢
5点半前在线等

第1个回答  2014-10-28
你的cdate格式和dtpicker不一样。。把cdate格式设置和dtpicker一样才查询。。追问

这样可以看懂了么,问题出在哪了

追答Adodc1.RecordSource = "select * from dbo.Table_tl where cdate >= '" & Format(DTPicker1.Value, "yyyy/m/d") & "'and ctime >=  '" & DTPicker3.Value & "'   and cdate <= '" & Format(DTPicker2.Value, "yyyy/m/d") & "' and ctime<= '" & DTPicker4.Value & "'"

DTPicker3和DTPicker4是不是时间啊?从图我看到好像是时间而已。所以不需要转换。如果不可以,你试试转化。。

追问

你写的这个跟我写的那个不是一模一样么?根本解决不了问题啊兄弟,1跟2是日期,3跟4是时间

追答Adodc1.RecordSource = "select * from dbo.Table_tl where convert(char,cdate,112) between '20130501'and '20130502' and convert(char(8),ctime,108) between
'00:00:00' and '06:00:00'

第2个回答  推荐于2021-01-10
1、什么数据库 ?
2、把表数据截个图我看看?
3、日期和时间什么数据类型追问

sql数据库
表里面也没什么
日期是cdate 时间是ctime
我就想知道是怎么实现的

追答

cdate 什么数据类型 ctime呢?

追问

这跟怎么实现有关系么?
cdate ctime都是数据库里的 又不是我新建的变量 不用定义吧
我小白 不懂的地方还望指教

追答

截个图给我啊 数据类型很重要啊 实现你说的功能也很简单的

追问

这样可以么?2个问题都能看见 

追答

不知道你的数据类型 但是下面的句子应该能帮你搞定
Adodc1.RecordSource = "select * from dbo.Table_tl where cdate +ctime >= '" & Format(DTPicker1.Value, "yyyy/MM/dd") & “ ” & Format(DTPicker3.Value, "HH:mm:ss") & "' and cdate+ctime <= '" & Format(DTPicker2.Value, "yyyy/MM/dd") & “ ” & Format(DTPicker4.Value, "HH:mm:ss") & "' "

追问

错误提示
conversion failed when converting datetime character string
意思是 转换失败,当转换日期字符串

追答

Adodc1.RecordSource = "select * from dbo.Table_tl where cdate +ctime >= '" & Format(DTPicker1.Value, "yyyy/MM/dd") & “ ” & Format(DTPicker3.Value, "HH:mm:ss") & "' and cdate+ctime <= '" & Format(DTPicker2.Value, "yyyy/MM/dd") & “ ” & Format(DTPicker4.Value, "HH:mm:ss") & "' "

刚才有点错误 重新用这个

追问

这跟上面那条有区别么?我没看出来啊,两次都有引号的错误,我都改好了,试的时候还是提示conversion failed when converting datetime character string错误,我大概了解你的意思了,麻烦兄弟你再看看是错在哪了

追答

你复制下面这个试试 你放心就行了 应该没问题的

追问

我试过了才那样说的。你仔细看看。你给的两条一模一样标点都一样,你再仔细看看

追答

嗯 在百度这个地方 我加的那个引号复制后成了全角 我重新给你一个

Adodc1.RecordSource = "select * from dbo.Table_tl where cdate +ctime >= '" & Format(DTPicker1.Value, "yyyy/MM/dd") & " " & Format(DTPicker3.Value, "HH:mm:ss") & "' and cdate+ctime <= '" & Format(DTPicker2.Value, "yyyy/MM/dd") & " " & Format(DTPicker4.Value, "HH:mm:ss") & "' "

追问

大哥追问要财富值的,我还留着财富值给你追加呢,你别乱答了 ,我说了标点的事我已经自己改过了,现在不是标点的事,是提示有错误,你在你vb上试过可以用么?要不你留个QQ我加你直接问你看如何?

追答

我在VB上试过了,如果你的数据类型没错误 没问题 你放心吧 复制我最后给你的 那个标点在百度回答框自动转成全角,但是我最后给你的转好了 我下班了 祝你好运 (看起来是一样的 其实不一样 相信我,我再给你一次

Adodc1.RecordSource ="select * from dbo.Table_tl where cdate +ctime >= '" & Format(DTPicker1.Value, "yyyy/MM/dd") & " " & Format(DTPicker3.Value, "HH:mm:ss") & "' and cdate+ctime <= '" & Format(DTPicker2.Value, "yyyy/MM/dd") & " " & Format(DTPicker4.Value, "HH:mm:ss") & "' "

本回答被提问者采纳

VB编程中 DTPicker控件查询日期,不能精确到月和日?
如果想要DTPicker控件也是日期与时间都有的就按下面的设置:将DTPicker控件的Format项选择3-dtpCustom 之后再将CustomFormat项输入:yyyy-mm-dd hh:mm:ss 代码:If SSTab1.Tab = 0 Then '如果当前选择的是“收入项目”选项卡 Set Mydb = ExeCutesql("select * from 收入 where 日期>'" &...

VB ~dtpicker提取日期输出格式错误问题~急~!
cstr(DTPicker1.Value)保存成字符串再赋值到字段中

请教为什么用DTPicker1.Value的值来查询ACCESS数据库表中的DATETIME内容...
遇到这种问题首先检查 DTPicker1.Value值的输出 写输出语句 VB我不大熟 VC用AfxMessageBox(var)PHP用echo 或者var_dump 等确定输出的值 再检查SQL语句的执行 直接到ACCESS中新建查询 把SQL语句直接输入 看看结果是否是理想的 很有可能SQL语句出错检查ACCESS数据库中日期项类型设置 是日期型还是字符...

VB中的dtpicker使用的问题!
你这样的使用完全没有问题呀?"Select * from 报告 where 报告日期>#" & dtpicker1.value & "#"对于日期型,数据应该使用 符号 #,无论使用ACCESS还是SQL都一样,这个是查询语句的格式要求,与使用什么数据库无关!!!应该:dodc1.recordsource="select * from 报告 where 报告日期 >#“ & D...

VB6.0数据库两时间段查询的疑惑
NOW函数的付值里已经含了时间部份发,不能在查询的地方加入时间的,其实为了强制实现从当月1号查起,就不改加入DTPicker1控件,而应该这样做吧 sql = "select * from jibenxinxi where date BETWEEN #" & year(DTPicker2.Value ) & "-" & month(DTPicker2.Value ) & "-1 00:00:00# ...

VB 假如DTPicker1现在的时间是今天2008-10-16,怎么得出2007-10-16...
DTP1.Value=cstr(Date)adodc1... select ... "between '" & Str(DTP1.Value - 365) & " 'and '" & Str(DTP2.Value - 365) & " ')这样DTP1.Value就可显示今天日期

vb查询某日期之前或之后的数据
If Option1.Value = True Then Adodc1.RecordSource = "select * from A2 where 日期<=" & "'" & Format(DTPicker1.Value, "yyyy-mm-dd") & "'"Else Adodc1.RecordSource = "select * from A2 where 日期>" & "'" & Format(DTPicker1.Value, "yyyy-mm-dd") & "'"End If Adod...

VB 中 DTPicker控件 字符串转换日期时间失败
DateSerial(DTPicker2.Value,vyear,vmon,vday)sqlt =sqlt&vyear&","&vmon&","&vday&")"Adodc1.RecordSource = sqlt Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 End Sub A机和B机在日期转字符串的区域选项的设置不同,会导致sql语句中最终的日期字符串不一致。最好的办法是像其它...

关于VB日期控件DateTimePicker的一些使用问题
呵呵 我知道了,请问你把 DTPicker1.Value = Date 这句代码放在哪了?你是不是放在DTPicker1_CallbackKeyDown这份事件上了 这就不对了吧?应该放在form_load事件里面就可以了

关于vb6.0 一段日期查询的问题
如果rk_date这列是文本的话,你后面看样子是想比较两个日期时间,这似乎有些不对,应该是用两个时间类型的进行比较,另外就是尽量少使用BETWEEN,使用大于号和小于号替代。例如:select * from worek where datej>'2012-1-1 0:00:00' and datej<'2012-10-1 23:00:00'...

相似回答
大家正在搜