首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >更改NLS_DATE_FORMAT中的c#

更改NLS_DATE_FORMAT中的c#
EN

Stack Overflow用户
提问于 2021-08-25 19:19:26
回答 1查看 469关注 0票数 0

我正在尝试更改查询的NLS_DATE_FORMAT,而且我正在努力做到这一点。

我用了两种方法

第一个

代码语言:javascript
代码运行次数:0
运行
复制
// 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)

第二位

代码语言:javascript
代码运行次数:0
运行
复制
// 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错误。

从现在起我有点困住了,任何帮助都会非常感谢。提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-25 19:45:49

甲骨文DATE是一种二进制数据类型,不存储格式,所以当您在第三方应用程序(即C#)中获得日期列时,您将只得到表示年份、月、日、小时、分钟和秒的二进制数据,而不是任何格式。

NLS_DATE_FORMAT会话参数是Oracle在用户会话中使用的内部格式,用于隐式地将日期转换为(和从)字符串。

SQL/Plus和SQL客户端应用程序还使用NLS_DATE_FORMAT会话参数来控制如何向用户显示二进制日期值,但是这种格式设置是在客户端应用程序上完成的(而不是由Oracle数据库完成)。

如果要格式化DATE数据类型,则在C#中执行格式设置。

如果您真的想在数据库中格式化它,那么使用TO_CHAR将每个日期列(没有格式)转换为格式化的字符串。

代码语言:javascript
代码运行次数:0
运行
复制
SELECT TO_CHAR(date_column, 'YYYY-MM-DD') AS formatted_date_column
FROM   dates_table
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68928740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档