当前位置:  开发笔记 > 后端 > 正文

VBA CDate与SQL Server 2005中的Convert(datetime,)不匹配

如何解决《VBACDate与SQLServer2005中的Convert(datetime,)不匹配》经验,为你挑选了1个好方法。

在Access 2003 VBA(使用立即窗口)中

? CDate(39870) 

返回:2009年2月26日

在SQL Server 2005(SQL Server Management Studio)中

SELECT CONVERT(DATETIME, 39870)

返回:2009-02-28 00:00:00.000

它们总是相差2还是还有其他日期设置我不见了?

服务器排序规则= SQL_Latin1_General_CP1_CI_AS



1> BradC..:

不同的语言和系统使用不同的日期数字表示.

SQL 2005计算从19/1年1月1日起的天数:

SELECT CONVERT(DATETIME, 1)
1900-01-02 00:00:00.000

Excel和Access VBA计算从18/30/1899开始的天数:

? CDate(1) 
12/31/1899 

其他人从其他看似随机的起点开始计算天数,秒数或有时毫秒数.我认为MS DOS使用1990年12月31日.UNIX使用1/1/1970.

所以不要试图直接翻译它们(数字,即).您必须转换为实际日期表示(01-03-2009),然后再转换回其他环境.

编辑:VBA有一些关于向后兼容性和闰年计算的有趣怪癖.看到乔尔与比尔盖茨的第一次相遇就读得很好.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有