【问题标题】:How do I map an Oracle timestamp to a DateTime in Fluent NHibernate?如何在 Fluent NHibernate 中将 Oracle 时间戳映射到 DateTime?
【发布时间】:2013-12-07 00:04:50
【问题描述】:

我在 Oracle 中有一个 TIMESTAMP(6) WITH TIME ZONE 列。尝试从表中加载记录时出现异常:System.ArgumentOutOfRangeException : Year、Month 和 Day 参数描述了无法表示的 DateTime。

这是我尝试过的映射:

Map(x => x.ExpirationDate, "EXPIRE_DATE").CustomType("timestamp").CustomSqlType("TIMESTAMP(6) WITH TIME ZONE").Nullable();

Map(x => x.ExpirationDate, "EXPIRE_DATE").CustomSqlType("TIMESTAMP(6) WITH TIME ZONE").Nullable();

Map(x => x.ExpirationDate, "EXPIRE_DATE").CustomSqlType("timestamp").Nullable();

Map(x => x.ExpirationDate, "EXPIRE_DATE").CustomType("timestamp").CustomSqlType("timestamp").Nullable();

【问题讨论】:

    标签: c# oracle fluent-nhibernate fluent-nhibernate-mapping


    【解决方案1】:

    我最终在 SQL 中使用了一个 Oracle 函数来获取日期超时。请参阅下面的 EXPIRE_DATE:

    string sql = @"SELECT CONTAINER_ID,
    PLANT_ID,
    MATERIAL_ID,
    QTY_IN,
    QTY_OUT,
    UNIT_OF_MEASURE,
    TO_CHAR (EXPIRE_DATE, 'YYYY-MON-DD HH24:MI:SS') AS MY_EXPIRE_DATE,
    LOT_ID,
    CONTAINER_STATUS,
    CONTENTS_TYPE
    FROM POMSNET.MM_CONTAINER_ST
    WHERE CONTENTS_TYPE = 'Raw Material'
    AND QTY_IN - QTY_OUT > 0";
    

    【讨论】:

      猜你喜欢
      • 2010-10-28
      • 1970-01-01
      • 2012-02-18
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      相关资源
      最近更新 更多