I’m just getting started with Npgsql for .NET Core Entity Framework and I ran into some trouble trying to do an insert into a Postgres table with a time data type. I initially tried to use a DateTime object, as worked with the date data type, but that didn’t work. The documentation said to use a TimeSpan, but I didn’t know what to span. Here’s what I did to get it to work.
Solution
I was confused because the .NET docs for the TimeSpan showed spans being created by subtracting dates. I thought I was expected to input a span between two time instants. I tried converting a Unix time stamp (the span of seconds since January 1, 1970) to a TimeSpan but that didn’t work. Finally, I just put the current time into the TimeSpan constructor.
using (var context = new PostsContext())
{
Post post = new Post();
post.Date = DateTime.UtcNow;
post.Time = new TimeSpan(DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, DateTime.UtcNow.Second);
post.Author = "John Q.";
post.Text = "Hello World!";
context.Post.Add(post);
context.SaveChanges();
}