gpt4 book ai didi

sql - INTEGER 到 DATETIME 的转换与 VB6 不同

转载 作者:行者123 更新时间:2023-12-04 22:53:20 25 4
gpt4 key购买 nike

我正在查看一些对 SQL 2005 db 运行查询的遗留 VB6 代码(在我的时代之前)。它在 WHERE 中提供了日期限制。子句 - 作为 CLng() 的结果,日期作为整数值给出在 VB6 中的日期。

例如

...
WHERE SomeDateField >= 40064

40064 是 VB6 通过执行 CLng() 将今天的日期转换为(9 月 8 日)的内容在上面。
但是,在 T-SQL 中,这个整数实际上转换为 10th Sep:
SELECT CAST(40064 AS DATETIME)

所以结果并不如预期。

任何人都知道是什么导致了 VB 和 T-SQL 之间转换的差异?

我确信这总是没有问题,显然我的建议是以标准 ISO 格式将日期作为日期传递。但是,需要尝试找出这种差异开始出现的原因。

最佳答案

似乎 VB 日期时间从 1899 年 12 月 30 日开始:

?CDbl(#30/12/1899 03:00:01#)
0.125011574074074

而 SQL 日期时间从 1900 年 6 月 1 日开始:
SELECT CAST(0 AS DATETIME)
1900-01-01 00:00:00.000

这提供了两天的差异,适合您的结果:)。
'VB6
CDbl(#2009-09-08#)
40064

-- SQL:
SELECT CAST(40064 AS DATETIME)
2009-09-10 00:00:00.000

关于sql - INTEGER 到 DATETIME 的转换与 VB6 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1393050/

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