【发布时间】:2021-10-25 22:29:42
【问题描述】:
我正在尝试更改查询的 NLS_DATE_FORMAT,但我正在努力这样做。
我使用了两种方法
第一个
// Use the command to change the format
OracleCommand cmd = new OracleCommand("ALTER SESSION SET NLS_DATE_FORMAT = \'YYYY-MM-DD\'", conn);
cmd.ExecuteNonQuery();
// Then do another command
OracleCommand mainCommand = new OracleCommand("SELECT * FROM dates_table", conn);
OracleDataReader reader = command.ExecuteReader();
while(reader.Read())
{
// Read Data
}
此选项查询均成功,但日期格式仍包含时间(HH:MM:SS)
第二次
// Put both commands in the same sql statement
string sql = "ALTER SESSION SET NLS_DATE_FORMAT = \'YYYY-MM-DD\';";
sql += "SELECT * FROM dates_table";
OracleCommand command = new OracleCommand(sql, conn);
OracleDataReader reader = command.ExecuteReader();
while(reader.Read())
{
// Read Data
}
此选项不成功,并给我错误ORA-0091,这似乎是第一条语句中的分号。我也试过删除分号,但它会产生ORA-00922 错误。
我现在有点卡住了,任何帮助将不胜感激。提前致谢!
【问题讨论】:
-
您为什么要尝试使用
NLS_DATE_FORMAT对其进行格式化?只需将 C# 中的日期时间值格式化为您想要的格式即可。 -
我同意;这是一个显示问题。做你的显示格式客户端。
-
@MT0 数据没有被更改为 c# DateTime 并且不能。我正在处理的查询并不总是相同的,我无法分辨什么是日期,什么不是。我希望我可以对每个访问的日期进行全面更改
-
@RobertHarvey 在查询期间是否有理由不这样做?
-
是的,如果您实际上没有检索 DateTime 对象。大概那么,您只是从数据库中检索 TEXT ?您关于无法分辨什么是约会和什么不是约会的评论非常令人担忧;通常,数据库具有您可以依赖的稳定架构。