在SELECT中计算日期时获取“ORA-01843:无效月份”

时间:2014-02-14 11:55:01

标签: c# asp.net oracle date

我在Oracle中有以下视图

SELECT
1 as col1
,2 as col2

,CASE
     WHEN salesdata.date1 > '01/01/0001'
     THEN 24*60*(salesdata.date1 - salesdata.date2)
     ELSE NULL
   END      AS dateresult
FROM 
salesdata

我正在使用一个简单的SELECT检索此视图:

select * from viewsample

然后我在下面运行这一行:

OracleConnection connection = new OracleConnection(connectionString);
connection.Open();
DbCommand command = connection.CreateCommand();

command.CommandTimeout = 14400;
command.CommandText = sql;
DbDataReader reader = command.ExecuteReader(CommandBehavior.SingleRow);

当ASP.Net运行此行时,我收到错误“ORA-01843:不是有效月份”。

看起来该命令将“dateresult”列理解为DATE,但它是一个INTEGER。

我已经尝试过像这样的CAST,但也没有工作:

CAST(24*60*(salesdata.date1 - salesdata.date2) as INTEGER)

1 个答案:

答案 0 :(得分:1)

您必须明确提供字符串的日期格式

to_date('01/01/0001','DD/MM/YYYY')

在选择中。 如果未提供,则使用客户端上的默认设置进行隐式转换为日期。默认日期格式取决于客户端计算机的区域设置。