gpt4 book ai didi

sql - 在 DateTime 上加入有时会在 Access 和 SQL Server 之间失败

转载 作者:行者123 更新时间:2023-12-04 15:55:51 24 4
gpt4 key购买 nike

我正在尝试在 Access 2013 中的日期/时间字段上连接两个表。一个表是本地 Access 表,另一个是来自 SQL Server 2012 的链接表。内部联接只返回它应该返回的大约一半值(两个表最初都是从同一个 native Access 表填充的)。

SELECT sample.*, r.*
FROM tblWQResultStaging_SingleParam AS r
INNER JOIN dbo_tblWQSample AS sample
ON (r.datetime_utc = sample.sample_datetime);

tblWQResultStaging_SingleParam 的示例数据(这是 Access native 表;数据按 Access 格式化):

日期时间_UTC
91 年 7 月 30 日下午 6:50:00
92 年 3 月 24 日下午 6:15:00
91 年 1 月 29 日晚上 9 点 30 分
91 年 3 月 26 日晚上 9:10:00

来自 dbo_tblWQSample 的示例数据(这是 SQL Server 链接表;按 Access 格式化):

样本日期时间
91 年 1 月 29 日晚上 9 点 30 分
91 年 3 月 26 日晚上 9:10:00
91 年 7 月 30 日下午 6:50:00
92 年 3 月 24 日下午 6:15:00

上面的查询结果:

样本日期时间
91 年 1 月 29 日晚上 9 点 30 分
91 年 3 月 26 日晚上 9:10:00

我已经尝试了多种 SQL Server 日期/时间字段类型 - datetime、datetime2(7)、datetime2(0)、smalldatetime - 但它们都不起作用,尽管在更改字段类型和删除/重新加载后刷新了链接表数据。

到目前为止,我的最佳猜测是舍入问题导致一些(但不是全部)日期以与原始 Access 数据不同的值加载到 SQL Server,但我不能确定。

最佳答案

在Access中,日期实际上是 double 的,并且可以有比可见存储更详细的时间信息(例如毫秒)

将 Access 中的日期与 SQL Server 中的日期进行比较时,应使用 DateDiff 函数并检查差异是否为 0 秒:

SELECT sample.*, r.*
FROM tblWQResultStaging_SingleParam AS r
INNER JOIN dbo_tblWQSample AS sample
ON (DateDiff("s", r.datetime_utc, sample.sample_datetime) = 0);

关于sql - 在 DateTime 上加入有时会在 Access 和 SQL Server 之间失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51731059/

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