一次写入数据库DateTime实例毫秒部分数据的异常

今天从A表中读取一个DateTime类型的数据,然后写进另一个B表中,但是写的数据不能精确到后面的毫秒数,看了看代码中读取的DateTime变量。

看上图也有毫秒位,排除读A表的问题。

看看数据库里的内容:

真是日了狗了,毫秒部分哪去了????

后来找到问题所在了

 String.Format("insert into [B].dbo.data_collection_database(name,create_time,time_from,time_to) values ({0},{1},{2},{3})",dbtime, firstDataTime, firstDataTime, lastDataTime)

我这样写的SQL语句,字符串化了,虽然可行,但是在DateTime ToString的时候会损失精度,知道这一点就找到问题所在了

使用带参的插入SQL语句就好了。

即:

String insertDataSQLCommand = "insert into [B].dbo.data_collection_database(name,create_time,time_from,time_to) values (@dbname,@firstDataTime,@firstDataTime,@lastDataTime)";
comm.CommandText = insertDataSQLCommand;
comm.Connection = conn;
SqlParameter[] Params =
   {
                    new SqlParameter("@dbname",SqlDbType.VarChar) { Value=dbName},
                    new SqlParameter("@firstDataTime",SqlDbType.DateTime) { Value=firstDataTime},
                    new SqlParameter("@lastDataTime",SqlDbType.DateTime) { Value=lastDataTime}
    };

comm.Parameters.AddRange(Params);

这样就好了

看毫秒出现了

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

此外在打印DateTime实例的时候需要注意,直接使用ToString()会忽略掉毫秒部分,下面方式可以避免。

dt.ToString("yyyy-MM-dd HH:mm:ss.fff")
Convert.ToDateTime((dt.ToString("yyyy-MM-dd HH:mm:ss.fffff")))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值