在项目开发中,要求保存毫秒精度的时间,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)。果然,更换驱动后,毫秒数据顺利保存,问题得到圆满解决。
: