Oracle 将 ISO 日期转换为计算机区域设置日期/时间
Posted
技术标签:
【中文标题】Oracle 将 ISO 日期转换为计算机区域设置日期/时间【英文标题】:Oracle converting ISO Date to computer locale date/time 【发布时间】:2010-12-11 01:18:05 【问题描述】:我使用以下插入字符串插入 Oracle 数据库表(大约 - 有 140 列,所以我不会全部显示):
“插入 AMS_ASSET_CS_IFACEOUT 值('abcdef', 'abcdef', to_date('2010-01-31', 'YYYY-MM-DD'), ... )”
几秒钟后,我运行以下代码 sn-p:
/// <summary>
/// Function: GetRecord
/// Description: Creates a new AMS-Asset and populates the
/// properties of this asset by evaluating properties provided
/// by the OracleDataReader.
/// </summary>
/// <param name="reader"> One record of information from the open connection.</param>
/// <returns> A fully created AMS-Asset record. </returns>
private static AmsAsset GetRecord(OracleDataReader reader)
AmsAsset newRecord = new AmsAsset();
for (int propertyIndex = 0; propertyIndex < reader.FieldCount; propertyIndex++)
string propertyName = reader.GetName(propertyIndex).ToLower();
string propertyValue = reader.GetValue(propertyIndex).ToString();
int propertyValueAsInteger = 0;
bool isPropertyAnInteger = Int32.TryParse(propertyValue, out propertyValueAsInteger);
if (isPropertyAnInteger)
newRecord.GetType().GetProperty(propertyName).SetValue(newRecord, propertyValueAsInteger, null);
else
newRecord.GetType().GetProperty(propertyName).SetValue(newRecord, propertyValue, null);
return newRecord;
我插入数据库的日期值现在返回为“1/31/2010 12:00:00 AM”。
我不完全确定为什么...我有哪些选择?我是否需要将我返回的格式转换为 ISO 编码?
问候,
肖恩·安德森
【问题讨论】:
【参考方案1】:由于您使用明确的 'YYYY-MM-DD' 格式日期插入数据库,因此它已正确存储在数据库中。
当您读出并显示该日期时,格式取决于您的区域设置。
我建议您使用显式格式说明符进行显示。
【讨论】:
只是为了确认,这是解决此问题的可接受方法吗? [IgnoreFirst] [DelimitedRecord(",")] [Serializable] public class AmsAsset public string assetnum get;放; 公共字符串 changeby get;放; public string changedate get return String.Format("0:YYYY-MM-DD", changedate); set .... 编辑:嗯,格式化结果很糟糕。不过我会修复它。谢谢!以上是关于Oracle 将 ISO 日期转换为计算机区域设置日期/时间的主要内容,如果未能解决你的问题,请参考以下文章