c# - C# - 桌面与服务器上的 Oracle 日期不同
问题描述
我正在运行 Windows 10,最近将我的 MVC 应用程序从 32 位更新到 64 位,包括 Oracle 客户端。
我在我的机器上安装了 ODAC1931_x64 并正在使用这个 nuget: https ://www.nuget.org/packages/Oracle.ManagedDataAccess/
当我在桌面上运行该应用程序时,一切正常。我可以像这样将日期传递给我的数据库包:
comm.Parameters.Add(Constants.DATABASE_PARAMETERS.FIELDS.START_DATE, OracleDbType.Date).Value = startDate;
在 DB 包中,日期为:
25-NOV-20
我在服务器 Windows 2016 上安装了相同的 ODAC,并将我的应用程序移至它。但是当我运行它时,日期在数据库中显示为:
20-11-25
现在 DB 包抛出错误:
ORA-01858: a non-numeric character was found where a numeric was expected
这在我使用 32 位 Oracle 时没有发生,日期为 25-NOV-20,它只发生在 64 位客户端上,并且只发生在服务器上,而不是我的桌面上。
知道如何解决这个问题吗?
解决方案
您依靠隐式日期转换来显示它并将其作为字符串输入。为了安全起见,您需要使用具有显式日期格式的转换函数。
例如。to_char(my_date_column,'dd/mm/yyyy hh24:mi:ss')
如果你想将日期显示为字符串
to_date('25/11/2020 21:00:00','hh24:mi:ss')
,如果你有一个字符串并且想要设置一个日期列。
请记住,2 位数的年份是每个软件工程师在 2000 年前夜以继日工作的原因。始终使用 4 位数。
推荐阅读
- javascript - 如何在表格中将分数划分为答案?
- node.js - Firebase 函数:只会变得未定义
- node.js - 如何使用 Google Datastore 查询“对象数组”(多个过滤器)
- html - html a href 语法错误。意外的 '$row' (T_VARIABLE),需要 ',' 或 ';'
- razor - 在另一个程序集中更新视图时,页面未反映我的更改
- python - Raspberry Pi 启动后不启动 python 脚本等待输入
- python - 包括 base.html 中的登录表单
- angular - Angular httpClient order of server responses
- python - Django用交集计数注释查询集
- vue.js - VueJS 编译失败