Vb6 更改数据库中存储的日期格式

Vb6 更改数据库中存储的日期格式,vb6,Vb6,如何将数据库中存储日期的格式从年月日更改为年月日?由于MSHFlexGrid直接从数据库读取数据,其源需要以dd/mm/yyyy格式存储日期。将文本框中的mm/dd/yyyy读取为dd/mm/yyyy没有问题。请帮助 日期通常以不可知的形式存储在数据库中,它们仅以本地化格式显示。您需要查看系统/组件的本地化设置和/或修改SELECT查询以返回所需格式的日期(尽管我怀疑网格仍将以美国格式显示)。日期按原样存储。你不能改变这一点。但是,您可以创建一个计算列,并通过将日期列转换为所需格式的varcha

如何将数据库中存储日期的格式从年月日更改为年月日?由于MSHFlexGrid直接从数据库读取数据,其源需要以dd/mm/yyyy格式存储日期。将文本框中的mm/dd/yyyy读取为dd/mm/yyyy没有问题。请帮助

日期通常以不可知的形式存储在数据库中,它们仅以本地化格式显示。您需要查看系统/组件的本地化设置和/或修改SELECT查询以返回所需格式的日期(尽管我怀疑网格仍将以美国格式显示)。日期按原样存储。你不能改变这一点。但是,您可以创建一个计算列,并通过将日期列转换为所需格式的varchar列,将日期显示为varchar,然后显示该列

(但在您的表单中它将是只读的)

此处的转换函数:

此处的计算列:

“MSHFlexGrid直接读取数据 “从数据库”

当然,必须使用中间的一些东西,例如数据环境设计器、ADODB记录集等(

)。 “MSHFlexGrid”中的“H”代表分层:是否显示分层数据,例如将分层ADODB记录集绑定到网格的数据源属性

如果不需要分层数据,请考虑微软DATAGRID(MSDATGRD .OCX)。您可以将非分层ADODB记录集绑定到该记录集,并利用其列的数据格式属性,这些属性的类型为StdFormat.StdDataFormat,即分别具有_Format和_UnFormat的事件。我使用它向DATETIME值添加亚秒精度,将NULL替换为“”等

更新:

您可以使用BindingCollection对象(需要引用Microsoft data Binding Collection VB 6.0)创建数据接收器,因为绑定对象支持DataFormat属性。有关工作示例,请参见


我不认为更改系统日期格式是一个完整的解决方案,因为您可以更改计算机,但仍然存在相同的问题,最好和最简单的方法是在查询中指定所需的格式,我不知道您使用的是什么数据库,但我会给您一个示例


如果网格直接从表中读取数据,则需要从该表中创建一个视图查询,然后在该表中指定格式。

能否告诉我们您使用的是哪个数据库?+1。如果可以,请更改系统上的区域设置。否则,请尝试更改SQL查询以返回字符串而不是本机日期类型。正如Lazarus所说,网格可能仍然会确定字符串是一个日期,并相应地对其进行格式化。谢谢,我得到了答案。通过手动更改注册表项[HKEY\U CURRENT\U USER\Control Panel\International]“sShortDate”=“M/D/yyyy”到“sShortDate”=“D/M/yyyy”。但是我如何使用代码来实现它呢?我不确定您是否应该在代码中重写它,这是一个本地系统设置。在美国,您看到的格式是正确的,在日本,他们希望使用dd.mm.yyyy,因此最好让本地计算机(实际上是用户)决定如何表示日期。是的,我是。我使用Set MSHFG1.DataSource=adodc1.Recordset。MSHFlexGrid MSHFG1是控件的名称。我使用MSHFlexGrid是因为它是只读的。我只想让它显示字段。