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 日期转换为计算机区域设置日期/时间的主要内容,如果未能解决你的问题,请参考以下文章

Swift:将 ISO8601 转换为日期

将 DB2 日期计算转换为 Oracle 语法

如何将 Excel 中的日期转换为 ISO 8601 格式

如何正确地将数据帧的所有日期时间列转换为 iso 格式

一种将当前日期时间转换为 ISO 8601 格式的优雅方法 [重复]

Python - 将日期的字符串表示形式转换为 ISO 8601