首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dbExpress不读取TimeStamp字段的毫秒部分

dbExpress不读取TimeStamp字段的毫秒部分
EN

Stack Overflow用户
提问于 2011-03-11 10:35:20
回答 3查看 1.6K关注 0票数 1

最近显示了一些Delphi / InterBase应用程序

“记录未被其他用户找到或更改”

它们使用dbExpress的默认TSQLQuery/TClientDataSet (或dbExpress)组件。

我们发现,在数据库表中,非dbExpress应用程序在毫秒内存储了一个字段。

看起来,dbExpress没有从DB读取毫秒,并且在update表SQL语句的“where”条件中使用截断的值,因此没有要更新的匹配记录。

更新:我们在应用程序中使用TSQLTimeStamp字段。没有OnBeforePost处理程序正在修改字段值。

更新2

从IBExternals.pas中可以看出,PCTimeStructure没有毫秒部分。因此,在德尔菲(2009)中,“通过设计”不支持InterBase的毫秒。

有没有人知道特尔斐的后续版本中是否增加了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-11 11:08:58

我猜这是时间戳 Interbase/Firebird客户机API,它不支持毫秒。这里是一个相关的火鸟跟踪问题。

更新:也可以看到这个回答

票数 3
EN

Stack Overflow用户

发布于 2011-03-11 10:48:17

不太了解dbexpress,可以这么说,但它可能是正在进行修整的数据库。例如,我知道SQL server确实会减少传递给它的毫秒。您可以尝试时间戳列而不是日期时间(不确定确切名称)。也许时间戳列在您正在使用的数据库中确实有毫秒的分辨率。

票数 0
EN

Stack Overflow用户

发布于 2012-07-13 15:47:41

代码语言:javascript
复制
var
  tmpDTS: string;
  tmpDT: TDateTiume;

DateTimeToString(tmpDTS,'yyyy"."mm"."dd" "hh"."nn"."ss" "zzz',tmpDT);

使用这种格式,我在Firebird表中插入了一个记录(通过TSQLQuery),而Flamerobin显示了确切的值。

相反,如果通过TDateTime参数插入值,则毫秒将被截断。DBGrid显示截断的值。

Delphi XE,Db Express,driver Firebird,Firebird 2.5.1。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5271799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档