向SQL_server数据库中插入时间时出错

internetibm 2001-11-08 01:19:42
我在SQL_server数据库中设置时间字段名为dates字段类型为datetime.
我用了显示日期的一个控件(tpicker)
在执行下面这一名话时出错!
sql="insert into temp(dates) values ('"+tpicker1.value+"')"
rs.open sql,conn,1,3
结果说类型不配,数据库中的这一个字段好象有日期又有时间,但tpicker只有日期没有时间。
不知道该怎么办?
...全文
214 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhdsq 2001-11-08
  • 打赏
  • 举报
回复
我建议你在SQL语句中作比较:
请看例子:
select datediff(year,'1997-02-26','1998-03-20 20:11:05')
结果:1
select datediff(month,'1997-02-26','1998-03-20 20:11:05')
结果:13
select datediff(day,'1997-02-26','1998-03-20 20:11:05')
结果:387

这三条语句你可以在SQL Server Query Analyzer里面运行,一试便知
baoxiang 2001-11-08
  • 打赏
  • 举报
回复
1、相差多少年?
datediff("yyyy",cdate(tpicker.value),cdate(rs.fields))
2、相差多少月?
datediff("m",cdate(tpicker.value),cdate(rs.fields))
3、相差多少天?
datediff("d",cdate(tpicker.value),cdate(rs.fields))


internetibm 2001-11-08
  • 打赏
  • 举报
回复
我想把tpicker.value的值与数据库的日期相减求出
1、相差多少年?
2、相差多少月?
3、相差多少天?
注意哟:tpicker.value是这种格式:2002-2-3
而系统数据库中的日期是这种格式 2001-11-8 14:22:23
我把两者相减试过一次:结果出来1900什么的,我真是不知道该怎么办?
请大侠快帮忙哟!
dlzk2001 2001-11-08
  • 打赏
  • 举报
回复
sql="insert into temp(dates) values (#" & cdate(tpicker1.value) & "#)

tpicker.year
internetibm 2001-11-08
  • 打赏
  • 举报
回复
我这样写对了
sql="insert into temp(dates) values('"&tpicker1.value&"')"
原来在vb中 "&"!="+";
谢谢各位的回复!
我现在还有一个问题:
dim rs as new adodb.recordset
rs.open "select getdate() as sdates ",conn,1,3
ss=rs.fields("sdates").value;
tempdate=tpicker.value-cdate(ss);
我想把tpicker中的日期与数据库中的系统日期相减以便求出年龄。但是结果不正确。
数据库的当前日期是 2001-11-8 1:23:45而tpicker中的日期是 2003-2-3
把tpicker中的日期与数据库中的日期相减这后出来1900.现在我只想取年,可以把月/日省去。
不知道怎样写。
请在侠以程序明示,谢谢!
internetibm 2001-11-08
  • 打赏
  • 举报
回复
我这样写对了
sql="insert into temp(dates) values('"&tpicker1.value&"')"
原来在vb中 "&"!="+";
谢谢各位的回复!
我现在还有一个问题:
dim rs as new adodb.recordset
rs.open "select getdate() as sdates ",conn,1,3
ss=rs.fields("sdates").value;
tempdate=tpicker.value-cdate(ss);
我想把tpicker中的日期与数据库中的系统日期相减以便求出年龄。但是结果不正确。
数据库的当前日期是 2001-11-8 1:23:45而tpicker中的日期是 2003-2-3
把tpicker中的日期与数据库中的日期相减这后出来1900.现在我只想取年,可以把月/日省去。
不知道怎样写。
请在侠以程序明示,谢谢!
cqq_chen 2001-11-08
  • 打赏
  • 举报
回复
对了,用FORMAT格式化一下,你用DEBUG.PRING tpicker1.value 来看看。
我记的应该是Format(tpicker1.value,"mm/dd/yyyy")
baoxiang 2001-11-08
  • 打赏
  • 举报
回复
foolishtiger(吴文智)的做法在ACCESS里是可以的。
但是在SQL SERVER中日期型应该用单引号
acev 2001-11-08
  • 打赏
  • 举报
回复
关注关注关注关注关注关注关注关注关注关注关注关注关注关注关注关注关注关注关注!
baoxiang 2001-11-08
  • 打赏
  • 举报
回复
试试这样
sql="insert into temp(dates) values ('" & cdate(tpicker1.value) & "')
internetibm 2001-11-08
  • 打赏
  • 举报
回复
是否要用format将他格式化,大侠帮忙。
internetibm 2001-11-08
  • 打赏
  • 举报
回复
大哥能写一个正确的么?
internetibm 2001-11-08
  • 打赏
  • 举报
回复
现在是字符串不能转化为日期,实时错误!
applekiller 2001-11-08
  • 打赏
  • 举报
回复
sql="insert into temp(dates) values ('"+tpicker1.value+"')
改为
"sql="insert into temp (dates) values ('tpicker1.value ')"
internetibm 2001-11-08
  • 打赏
  • 举报
回复
帮忙吧,在下很着急!
internetibm 2001-11-08
  • 打赏
  • 举报
回复
结果还是不行,说类型不匹配!
大侠请帮忙!
foolishtiger 2001-11-08
  • 打赏
  • 举报
回复
sql="insert into temp(dates) values ('"+tpicker1.value+"')
改为
"sql="insert into temp (dates) values ('#" + tpicker1.value +"#')"
internetibm 2001-11-08
  • 打赏
  • 举报
回复
不会吧,没有肯帮我?

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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