【问题标题】:How to set DateTime.Now when inserting in postgresql table?在 postgresql 表中插入时如何设置 DateTime.Now?
【发布时间】:2014-02-08 23:19:30
【问题描述】:

我们运送图片,我们图片的默认文化设置是 MDY。

安装图像的客户服务器的区域设置为 DMY 已经使用我们的图像几天了,然后发现日期样式错误(即在将 DateTime.Now() 插入表时)。

我们尝试将 postgreSQL 语言环境更改为 DMY(在 postgresql.conf 中),但没有成功。

我正在考虑将我的 C# 应用程序中的所有 DateTime.Now() 调用转换为 DMY 格式。

我还注意到我可以在我的 web.config 中进行设置,这可能会有所帮助。

由于我似乎无法更改 postgreSQL 设置,我有哪些选择?

我正在考虑的另一个选择是卸载 postgreSQL,然后使用正确的语言环境集再次安装它(只要我备份我的数据库)。希望这会奏效。

【问题讨论】:

标签: c# postgresql


【解决方案1】:

如果您需要插入当前时间,请将值发送为now

   INSERT INTO TestTable (code, title,  date)
        VALUES ('aaa', 'bbbb', now);

你可以为其他列使用参数,让服务器从数据库端插入当前日期时间值

如果你要设置日期时间参数,不要将值设置为字符串。如下操作

string sql  ="INSERT INTO TestTable (dateTimeColumnName) VALUES (:datetimeParamName)";
// create connection cmd etc...
cmd.Parameters.AddWithValue(":datetimeParamName", DateTime.Now);

NpgsqlParameter param = new NpgsqlParameter(":datetimeParamName",NpgsqlTypes.NpgsqlDbType.Date);
param.Value = DateTime.Now;
cmd.Parameters.Add(param); 

【讨论】:

  • 谢谢达米特。我看到在代码中我正在创建一个传递 DateTime.Now 的 SQL 字符串,并将其传递给 DbCommand (ServiceStack) executeSQL() 方法。我将尝试 var sql ="INSERT INTO TestTable (dateTimeColumnName) VALUES (now)" 看看是否可行,否则我将采用您的最后一种方法。
猜你喜欢
  • 1970-01-01
  • 2013-04-28
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多