【问题标题】:How to use TIME datatype in SQL Server 2008 and C#?如何在 SQL Server 2008 和 C# 中使用 TIME 数据类型?
【发布时间】:2012-03-25 17:23:21
【问题描述】:

我正在使用 C# 和 SQL Server 2008 开发一个 Web 应用程序。

我有一个数据读取器,它读取列PlayTime,定义为TIME 数据类型。

我想写一个函数返回PlayTime的值。

private static Timespan GetTime(IDataReader rdr, string columnName)`
{
    int index = rdr.GetOrdinal(columnName);

    if (rdr.IsDBNull(index))
    {
      return ; // Here I want to return null or zero 
    }

    return (TimeSpan)rdr[index];
}
  1. 我对时间数据类型使用Timespan 是否正确?

  2. 如果datareader的值没有,如何返回null

最好的问候,

红魔

【问题讨论】:

  • 您是否考虑过返回一个可为空的 TimeSpan
  • 就像你说的,我需要输入“时间跨度?” ,可以返回null吗?

标签: sql-server-2008 c#-3.0 sqldatatypes


【解决方案1】:

您需要使用可为空的时间跨度

 private static Nullable<TimeSpan> GetTime(IDataReader rdr, string columnName)
        {
            int index = rdr.GetOrdinal(columnName);
            if (rdr.IsDBNull(index))
            {
                return null;
            }
            return (Nullable<TimeSpan>)rdr[index];
        }

【讨论】:

  • 感谢您的回复。在表中,该列“播放时间”是“时间”数据类型:我不想要日期。就像你展示的那样,它会包含日期,对吧?
  • 是否需要在return rdr[index]处添加“Nullable”,只需要类型转换?
【解决方案2】:

类似这样的:

private static TimeSpan? GetTime(IDataReader rdr, string columnName)
{
    int index = rdr.GetOrdinal(columnName);
    if (rdr.IsDBNull(index))
    {
      return null;
    }
   return (TimeSpan)rdr[index];
}

【讨论】:

    猜你喜欢
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 2015-12-28
    • 2014-11-11
    相关资源
    最近更新 更多