我在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)
答案 0 :(得分:1)
您必须明确提供字符串的日期格式
to_date('01/01/0001','DD/MM/YYYY')
在选择中。 如果未提供,则使用客户端上的默认设置进行隐式转换为日期。默认日期格式取决于客户端计算机的区域设置。