gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:16:04 27 4
gpt4 key购买 nike

在 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

最佳答案

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

SQL 2005 计算从 1/1/1900 开始的天数:

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

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

? CDate(1) 
12/31/1899

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

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

编辑:VBA 在向后兼容性和闰年计算方面有一些有趣的怪癖。参见 Joel's first encounter with Bill Gates阅读愉快。

关于sql-server - VBA CDate 与 SQL Server 2005 中的 Convert(datetime,) 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/698133/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com