在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计算从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有一些关于向后兼容性和闰年计算的有趣怪癖.看到乔尔与比尔盖茨的第一次相遇就读得很好.