【问题标题】:Saving date and time to PostgreSQL using Delphi使用 Delphi 将日期和时间保存到 PostgreSQL
【发布时间】:2015-10-06 09:17:44
【问题描述】:

我的 PostgreSQL 数据库中有一个列,格式为 timestamp without time zone。我想使用以下代码保存当前日期:

  MyStoredProc.ParamByName('date').Value := FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz', Now);

我的存储过程中的date 值声明为DateTime,但将其设置为PgTimeStamp 也无济于事。第一列是在 PostgreSQL 中创建的,时间戳工作正常,但第二列,我试图从我的代码中保存数据,总是显示零。

我做错了什么?

【问题讨论】:

  • MyStoredProc.ParamByName('date').Value := 'now()::timestamp with time zone';在 Delphi 环境中未经测试
  • 我使用与您类似的代码在我的 PostgreSQL 数据库中保存 TDateTime。我的字符串格式是一样的。我的数据库字段是creationTime TIMESTAMP DEFAULT NOW()
  • 你为什么不使用dd/mm/yy hh:mm:ss = 05/06/49 01:02:03delphi formats
  • @Dmitry 因为 postgresql 期望年-月-日时:分:秒.ms 格式

标签: postgresql delphi delphi-10-seattle


【解决方案1】:

你应该可以直接将 datetime 对象作为参数传递给他:

 MyStoredProc.ParamByName('date').Value := Now;

或:

 MyStoredProc.ParamByName('date').AsDateTime := Now;

PostgreSQL函数的参数当然必须是时区类型。

【讨论】:

  • 这是我尝试的第一件事。它不会返回像 Invalid STRING format 这样的错误,但数字仍然保存为零。
  • 这可能是框架的错误,我习惯于使用 zeos lib,并且我没有任何问题传递 datetime 对象,我可以确认所有时间部分都已存储。
猜你喜欢
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多