这个npgsql Time数据类型文档是什么意思?

时间:2013-01-23 12:54:36

标签: npgsql

我们正在考虑使用PostgreSQL,因为它遵守ISO 8601 3.5.2,特别是关于独立(未组合)时间数据类型(例如18:50),与组合的DateTime(时间戳)类型不同。请参阅relevant PostgreSQL 9.2. docs。 Time of Day数据类型基于24小时制,与日历无关,运行时间为00:00至24:00。

我们有Windows桌面,正在考虑使用.NET的npgsql提供程序。但我被<{3>}抛出 npgsqlTime 类型; Hours 实例属性的内容如下:

  

获取实例中保留的整个小时数。请注意   时间24:00:00可以存储以实现往返兼容性。 任何   对这样的值进行计算会将[sic]标准化为00:00:00 。 [我的重点]

“这样的值”是指“24:00:00”。我是否正确理解了这个文档,如果要创建两个 npgsqlTime 实例,如下所示:

    NpgsqlTime midnightTonight = new NpgsqlTime(24,0,0);
    NpgsqlTime midnightThisMorning = new NpgsqlTime(0,0,0);

然后调用Subtract方法:

    midnightTonight.Subtract(midnightThisMorning);

midnightTonight 将被标准化(由提供者静默)到00:00,减法方法的结果将是24小时但0小时的间隔?

或者,如果我们实例化两次,那么:

   NpgsqlTime midnightTonight = new NpgsqlTime(24,0,0);
    NpgsqlTime lateAfternoon = new NpgsqlTime(16,0,0);

然后减去:

    midnightTonight.Subtract(lateAfternoon);

我们会得到16小时而不是8小时的间隔?

编辑:现在已经安装了PostgreSQL和Npgsql并且我可以测试,似乎在Subtract()上没有发生24:00到00:00的静默“规范化”,但它确实发生在Add()上。 / p>

编辑:所以Subtract()没问题。我们希望答案是8,它是8。

我很高兴它不会出现在Subtract()上,我希望默认情况下它不会出现在Add()上,特别是因为公共API中有一个Normalize()方法。

0 个答案:

没有答案