INSERT INTO 语句中转换text为时间

aeae12 2009-06-05 11:01:14
语句如下:
INSERT INTO zd_yp_pd (pd_code,.....,pd_sj,pd_rq) select Xm_Code,.....,'" & Text2.Text & "','" & Text1.Text & "' from v_yp_kc"

SQL数据库pd_sj,pd_rq字段设置是datetime类型,窗体载入时首先Text1.Text = Date,Text2.Text = Time,程序能正常执行,但是写入到数据库pd_sj字段的不是纯时间而是“1900-1-1 12:00:00”,pd_rq字段正常,请问高人怎样才能导入数据后使pd_sj字段为纯时间,“12:00:00”

谢谢
...全文
175 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
古今多少事 2009-06-06
  • 打赏
  • 举报
回复
我的怎么就行呢?将格式改为长时间后,原来的日期就看不到了,只显示时间部分如:00:00:00.我的ACCESS是2003版。你说你的程序能正常执行,其中" & Text2.Text & "不转换成日期时间类型可以吗?我真的不太相信。
三楼の郎 2009-06-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 aeae12 的回复:]
语句如下:
INSERT INTO zd_yp_pd (pd_code,.....,pd_sj,pd_rq) select Xm_Code,.....,'" & Text2.Text & "','" & Text1.Text & "' from v_yp_kc"

SQL数据库pd_sj,pd_rq字段设置是datetime类型,窗体载入时首先Text1.Text = Date,Text2.Text = Time,程序能正常执行,但是写入到数据库pd_sj字段的不是纯时间而是“1900-1-1 12:00:00”,pd_rq字段正常,请问高人怎样才能导入数据后使pd_sj字段为纯时间,“12:00:00”

谢谢
[/Quote]

因为是Datetime型,包括日期和时间两部分数据,如果某一部分没有赋值,系统会自动以默认值替代,所以不光是pd_sj的日期部分会是1900-1-1,pd_rq的时间部分同样会是0:00:00。

你可以选择将pd_sj和pd_rq合并成一个Datetime型字段,一个Datetime型字段就已经可以把你的日期和时间两部分数据都存下了。

或者把pd_rq和pd_sj的字段类型改成varchar型,Access里用字符型,存之前最好做一下处理,比如pd_rq统一成yyyy-mm-dd pd_rq统一成hh:mm:ss,一方面显示起来比较好看,另一方面可以直接用字符串比较来比较日期时间的大小

还可以选择不管它,在读取的时候再来处理,pd_rq只取日期部分,pd_sj只取时间部分。
lyserver 2009-06-06
  • 打赏
  • 举报
回复
回错贴了.
该贴要么修改数据表结构,要么在查询时,格式化日期,比如
SELECT CONVERT(VARCHAR(10),pd_rq,120) AS 日期1 FROM 你的数据表
lyserver 2009-06-06
  • 打赏
  • 举报
回复
Picture1.PaintPicture Image1.Picture, 0, pp * i, Picture1.ScaleWidth, pp, 0, , pp * i, Image1.Width, pi, vbSrcCopy
这一句多了一个“,”,因为参数多函数原型多出一个。
贝隆 2009-06-06
  • 打赏
  • 举报
回复
直接截取有用的部分不就可以了?
simon__sun 2009-06-06
  • 打赏
  • 举报
回复
修改数据库结构,将pd_sj改为字符型

或者取数据时用
convert(chr(8),pd_sj,108),取出的就只是时间了
aeae12 2009-06-06
  • 打赏
  • 举报
回复
没想到这么多人回帖,我用下面方法只向数据库表中插入一条数据时间字段就不会有什么问题,显示的是纯时间。
Adodc1.Recordset.AddNew
Adodc1.Recordset!Rk_rq = Text1.Text & ""
Adodc1.Recordset!Rk_sj = Text2.Text & ""
Adodc3.Recordset.Update

问题可以通过其他方法解决,现在只是想请各路高人探讨一下为什么,有什么办法做到不修改字段类型的情况下插入多条数据时也可以得到纯时间
clear_zero 2009-06-06
  • 打赏
  • 举报
回复
因为是Datetime型,包括日期和时间两部分数据,如果某一部分没有赋值,系统会自动以默认值替代,所以不光是pd_sj的日期部分会是1900-1-1,pd_rq的时间部分同样会是0:00:00。

你可以选择将pd_sj和pd_rq合并成一个Datetime型字段,一个Datetime型字段就已经可以把你的日期和时间两部分数据都存下了。

或者把pd_rq和pd_sj的字段类型改成varchar型,Access里用字符型,存之前最好做一下处理,比如pd_rq统一成yyyy-mm- dd pd_rq统一成hh:mm:ss,一方面显示起来比较好看,另一方面可以直接用字符串比较来比较日期时间的大小

还可以选择不管它,在读取的时候再来处理,pd_rq只取日期部分,pd_sj只取时间部分。
ScottYj 2009-06-06
  • 打赏
  • 举报
回复
没回应了
ScottYj 2009-06-05
  • 打赏
  • 举报
回复
只能修改数据库结构,将pd_sj改为字符型。因为你的pd_sj定义为DATETIME,是没办法只保存你所说的纯时间部分的。
aeae12 2009-06-05
  • 打赏
  • 举报
回复
以上方法都试了不行
古今多少事 2009-06-05
  • 打赏
  • 举报
回复
将数据库中pd_sj字段的格式和掩码改为长时间试试。不行的话,试试Format函数转换一下。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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