如何把TimeSpan类的值存入数据库中

oioixiabings 2010-09-02 10:00:09
有一个TimeSpan类 _callTimeContinue的值为0.00:00:07.859684要存入数据库中名为"timeLong"的字段中,"timeLong"字段的数据类型为"日期/时间",总是出现以下错误:"标准表达式中数据类型不匹配",如直接用"0.00:00:07"进行操作,则对数据库的操作正确,采用_callTimeContinue.ToString()也不行,请问如何把_callTimeContinue转为DateTime类,或如何把后面的毫秒值去掉?谢谢!
...全文
660 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
deyygywxf 2010-09-02
  • 打赏
  • 举报
回复
字段类型改为text或vchar(15)
rencongzhi 2010-09-02
  • 打赏
  • 举报
回复
先存进去再说,显示的时候截取一下....
oioixiabings 2010-09-02
  • 打赏
  • 举报
回复
采用以下方式解决:
        private string TimeSpanToStrig(TimeSpan timeLong)
{
string Days = timeLong.Days.ToString();
string Hours = timeLong.Hours.ToString();
string Minutes = timeLong.Minutes.ToString();
string Seconds = timeLong.Seconds.ToString();
return Hours + ":" + Minutes + ":" + Seconds;
}

先将TimeSpan转为字符串,再用SQL语名进行数据库操作,不知是否有更好的方式?
oioixiabings 2010-09-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gomoku 的回复:]
TimeSpan实际上就一个long类型的Ticks。
数据库中用一个bigint就可以存放了。

long l = timespan.Ticks;
TimeSpan timespan = new TimeSpan(l);
[/Quote]

要存放改变数据库的字段类型是没问题的,但显示出来不是直观吧,毕竟用户不需要毫秒的值.
oioixiabings 2010-09-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jjx0224 的回复:]
两个办法,一个是修改数据库,将日期字段改成nvarchar

二:将0.00:00:07.859684值存入一个datatime字段中,格式弄好就OK
[/Quote]
我是用access建的库,字段类型为"日期/时间"的"长时间",但存入时出错
gomoku 2010-09-02
  • 打赏
  • 举报
回复
TimeSpan实际上就一个long类型的Ticks。
数据库中用一个bigint就可以存放了。

long l = timespan.Ticks;
TimeSpan timespan = new TimeSpan(l);
Jason-Jin 2010-09-02
  • 打赏
  • 举报
回复
两个办法,一个是修改数据库,将日期字段改成nvarchar

二:将0.00:00:07.859684值存入一个datatime字段中,格式弄好就OK
oioixiabings 2010-09-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyazhe 的回复:]
字段类型改为text或vchar(15)
[/Quote]
这样显示的时候也将出现毫秒值,对于用户来说不需要
wuyq11 2010-09-02
  • 打赏
  • 举报
回复
nvarchar保存就可以了
bdmh 2010-09-02
  • 打赏
  • 举报
回复
这样的数据,就别用日期型了,怎么这么死脑筋呢,用varchar就可
兔子-顾问 2010-09-02
  • 打赏
  • 举报
回复
字段类型改为text或vchar(15)

111,092

社区成员

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

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

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