代码之家  ›  专栏  ›  技术社区  ›  Mike

在本机SQL查询中应该使用多少列格式?

  •  2
  • Mike  · 技术社区  · 15 年前

    decode() , instr() initcap() .

    例子

    (to_number(to_char(to_date('1', 'J') + (EndTime - StartTime), 'J') - 1) * 24)
     + (to_char(to_date('00', 'HH24') + (EndTime - EndTime), 'HH24')) 
     || ':' ||
     to_char(to_date('00', 'MI') + (EndTime - StartTime), 'MI')
     as duration_time
    

    我知道它不太漂亮。因为使用ORM格式化类似的东西(我使用的是NHibernate)可能是浪费时间。我在想,我可以简单地让我的数据处理格式。我可以在我的电脑里用这样的东西# set 财产。

    public TimeSpan DurationTimeSpan
    {
     get
     {
      return EndTime.Subtract(StartTime);
     }
    }
    

    所以我的问题是,我应该让DTO对象处理这种格式吗?或者DTO对象不应该对这样的事情负责?就我个人而言,让我去可能要干净得多 属性来进行这种格式化。从外观上看,大多数格式可能都可以用非常简单的C#实现。

    2 回复  |  直到 15 年前
        1
  •  5
  •   Jon Skeet    15 年前

    这听起来绝对像是应该在远离数据库的地方做的事情。数据库的目的是为应用程序存储和提供数据。格式化是特定于客户机的,不应该是查询的一部分。

    除此之外,我怀疑您会发现在.NET中编写/测试/调试格式比在SQL中容易得多:)

    这并不意味着一定要把逻辑放在dto中。如果有两个不同的客户机视图需要以不同的方式呈现相同的数据呢?如果你的DTO真的 运输 TimeSpan )但是我会把格式留给UI层。

        2
  •  1
  •   Yves M.    15 年前

    在我看来,sql应该只提供解释数据所需的最少格式。

    其余的格式应该真正进入数据层,甚至业务层。