数据网格中没有时间的日期字段,截断不起作用

时间:2016-03-13 06:30:07

标签: c# wpf oracle date datagrid

在我的数据库(oracle 10g)中,我在我的表中:

...
Date_ DATE NOT NULL,
...

在我的WPF应用程序中,我计划使用日历来插入日期,但是现在作为测试我已经手动插入,如下所示:

..., TO_DATE('21/02/16','DD/MM/YY'), ...

问题是当我将这个表从DataSet显示到WPF中的DataGrid时,它总是显示为21/02/2016 12:00:00 AM。但是,sqlplus命令行中的select date_ from tablename;向我显示21-FEB-2016,我还在sqlplus中使用trunc(date_)更新了表格,但时间仍显示在数据网格中

如果我尝试类似

的话
query = ("select column1, column2, trunc(date_) from tablename");

query = ("select column1, column2, to_date(date_, 'dd/mm/yyyy') from tablename");

然后数据网格中的列名称改为" trunc(date)"但仍然显示时间。

奖金问题:

query = ("select column1, column2, date_ AS Date from tablename");

抛出一个越界异常,为什么?

1 个答案:

答案 0 :(得分:0)

以下是您的问题 - 在ORA中您的数据存储为日期[无小时,分钟,秒等]。但是当您在DataTable中加载DataSet时,您的.net提供程序会自动将您的Oracle类型转换为DateTime。如你所知,DateTime有时间。如果您只想显示日期,您有两种方式。您可以使用<value>.ToString("dd/MM/yy")

编辑特殊网格列,该列会显示to_char,或者只是编辑您的查询以将日期自动加载为字符串
query = "select column1, column2, to_char(date_, 'dd/mm/yyyy') AS MyDate  from tablename";

实际上,有很多方法可以做到,但这里的主要问题是.net类型不匹配oracle类型和某些你需要转换的东西。通常,您显示数据类型的字符串表示形式。但是当你保存时,你将输入转换为DB数据类型。