【问题标题】:PostgreSQL doesn't save full DateTimeOffsetPostgreSQL 不保存完整的 DateTimeOffset
【发布时间】:2015-07-02 15:40:41
【问题描述】:

我遇到了 PostgreSQL 或 Devart 数据库连接库的错误。以下是我创建的一个简单的测试应用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DateTimeOffsetTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var context = new Context())
            {
                var e = new Ent() { CreatedOn = DateTimeOffset.Now };
                Console.WriteLine(e.CreatedOn.UtcDateTime.Ticks);
                context.Ents.Add(e);
                context.SaveChanges();
            }

            using (var context = new Context())
            {
                var ent = context.Ents.Single();

                Console.WriteLine(ent.CreatedOn.UtcDateTime.Ticks);
                Console.Read();

                context.Ents.Remove(ent);
                context.SaveChanges();
            }
        }
    }
}

我希望写入控制台的两行是相同的,但第二行的最后一位总是 0。示例:

这是 PostgreSQL 设置方式的精度问题吗?如果是这样,我可以以某种方式更改它吗?如果我使用 SqlServer 作为我的数据库,此测试工作正常。

【问题讨论】:

    标签: c# entity-framework postgresql devart


    【解决方案1】:

    如果 CreatedOn 是 PostgreSQL 时间戳,则精度为 1 微秒。 1 个滴答声是 0.1 微秒。

    【讨论】:

    • 我明白了,有什么办法可以提高时间戳的精度吗?我假设不是
    • 您可以存储刻度。 64 位整数 (bigint) 足以满足您的时间戳。如果您不喜欢在程序中使用刻度,您可以将刻度存储为支持字段,然后使用 DateTime 未映射字段
    • 好主意,我可能不得不这样做。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    相关资源
    最近更新 更多