Sql server 从SQL Server获取日期格式的日期

Sql server 从SQL Server获取日期格式的日期,sql-server,vba,Sql Server,Vba,我在SQL Server中有一个表,其date列设置为默认日期,但是,当我使用VBA从服务器获取数据时,我会以字符串格式获取日期列。我有没有办法以日期格式获取日期?您能告诉我如何输入数据吗?例如通过内置连接器或通过VBA对象的记录集 如果不进行真正的测试,我不会建议进行以下快速破解: 从表x中选择DateDiff(DD,'1899-12-30',date_列)作为[列] 这是干什么的 在Excel中,日期从1900年1月1日开始。当您将日期更改为“常规”时,您会发现它实际上是一个带有格式的数字。

我在SQL Server中有一个表,其
date
列设置为默认日期,但是,当我使用VBA从服务器获取数据时,我会以字符串格式获取日期列。我有没有办法以日期格式获取日期?

您能告诉我如何输入数据吗?例如通过内置连接器或通过VBA对象的记录集

如果不进行真正的测试,我不会建议进行以下快速破解:

从表x中选择DateDiff(DD,'1899-12-30',date_列)作为[列]

这是干什么的
在Excel中,日期从1900年1月1日开始。当您将日期更改为“常规”时,您会发现它实际上是一个带有格式的数字。上述日期差异将为您提供日期的excel数字版本

例如,今天是2019年11月29日,当单元格格式为“通用”时,将是43798

选择DateDiff(DD,'1899-12-30','2019-11-29')作为[列]

更多信息请点击此处



请注意,您的问题基于SQL格式的日期

获取字符串并将其转换为日期格式。这是我的建议,因为我不知道VBA。日期没有格式。它们是二进制值。VBA也有日期,事实上,强类型日期参数与VBA和VB6一起使用。如果您在发布代码时遇到格式问题,事实上,鉴于VBA无法创建独立的应用程序,您在哪里使用它?在Excel中,值在单元格级别格式化。如果显示日期值,所看到的内容将遵循单元格的格式。只需将SQL中单元格的属性maybe或datetime的格式更改为ISO8601(“yyyy-mm-ddThh:mi:ss.mmmZ”)格式,即可以不同的方式显示相同的值?@VBA可以读取日期值-始终可以。日期是由应用程序(Excel、Word等)格式化的,因此硬编码格式只会让事情变得糟糕。感谢回复,我使用的是ado连接,我的sql查询是SELECT*FROM TABLENAMEY。所以我们用了类似的东西,基本上没问题。一件事是,如果要将数据添加到第2行(例如在列名下),最好选择整个列并选择日期格式。Excel将检查前几行,并为列的其余部分定义格式。也可能,只需在vba中选择整列,然后对列执行文本转换。它在进行转换时重新断言数据。