在项目开发中,要求保存毫秒精度的时间,C#中DateTime类型虽然有Millsecond属性,但是插入Timestamp类型的Oracle数据列时,无法保存毫秒数据。

以下是我的开发环境:

操作系统:Windows

开发工具:Visual Studio 2010

开发语言:C#

数据库:Oracle 10.2.0.4

在以前的项目中也遇到过类似问题,当时是采取保存字符串的方法来解决的。具体的,在程序的实体类中定义字段类型为String,在数据库中定义对应列为Varchar2(),通过调用DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")语句来保存毫秒精度时间。这样做,功能可以实现,但是需要在存库和读库时进行转换,麻烦,想找到一个一劳永逸的解决办法。

和弟兄们沟通后,认为既然DataTime保存的有毫秒时间,但是保存后却丢失了,很有可能是和微软的Oracle驱动(System.Data.OracleClient)有关,可以尝试一下使用Oracle的官方驱动(Oracle.ManagedDataAccess.Client)。果然,更换驱动后,毫秒数据顺利保存,问题得到圆满解决。

0b1331709591d260c1c78e86d0c51c18.png

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐