gpt4 book ai didi

c# - 将 C# 日期时间存储到 postgresql TimeStamp

转载 作者:太空狗 更新时间:2023-10-29 21:51:37 24 4
gpt4 key购买 nike

我正在开发一个将电子表格中的数据存储到 Postgresql 数据库的应用程序。我熟悉 C# 和 .Net,但不太熟悉 Postgresql。我在将 DateTime 值存储到 TimeStamp 列时遇到问题;我不断收到一条错误消息:无法将参数值从 DateTime 转换为 Byte[]。任何建议将不胜感激。

string query = "INSERT INTO organizer(organizer_name, contact_name, phone, alt_phone, created_date, last_update) " +
"VALUES('@name', '@contactname', '@phone', '@altphone', '@created', '@updated')";

OdbcCommand cmd = new OdbcCommand(query, con);
cmd.Parameters.Add("@name", OdbcType.VarChar);
cmd.Parameters["@name"].Value = org.Name;

cmd.Parameters.Add("@contactname", OdbcType.VarChar);
cmd.Parameters["@contactname"].Value = org.ContactName;

cmd.Parameters.Add("@phone", OdbcType.VarChar);
cmd.Parameters["@phone"].Value = org.Phone;

cmd.Parameters.Add("@altphone", OdbcType.VarChar);
cmd.Parameters["@altphone"].Value = org.AltPhone;

cmd.Parameters.Add("@created", OdbcType.Timestamp).Value = DateTime.Now;

cmd.Parameters.Add("@updated", OdbcType.Timestamp).Value = DateTime.Now;

con.Open();
cmd.ExecuteNonQuery();

最佳答案

我没有方便测试的 PostgreSQL 数据库,但我相信您看到了这一点,因为 OdbcType.Timestamp 实际上是一个字节数组,而不是时间和日期。来自 MSDN :

Timestamp: A stream of binary data (SQL_BINARY). This maps to an Array of type Byte.

这可能是因为 timestamp 数据类型,在 SQL Server 中, 是

a data type that exposes automatically generated, unique binary numbers within a database. timestamp is generally used as a mechanism for version-stamping table rows.

我会尝试使用 OdbcType.DateTime,它似乎映射到 PostgreSQL's 背后的概念时间戳

编辑:

Here是一篇有用的文章,总结了 PostgreSQL 和 .NET 之间的映射。

关于c# - 将 C# 日期时间存储到 postgresql TimeStamp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8672468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com