gpt4 book ai didi

比较 datetime2 时 SQL 忽略纳秒

转载 作者:行者123 更新时间:2023-12-03 01:13:25 25 4
gpt4 key购买 nike

我有 2 个表,每个表都有一个 datetime2 字段。其中一个表也存储了纳秒,而另一个表最多只存储毫秒(无法更改此数据)。现在我想比较这两个表并检查 datetime2 值是否匹配,但我必须为此忽略纳秒。

示例数据:

Table1                         Table2

2018-01-24 10:51:23.9976180 2018-01-24 10:51:23.9970000
2018-01-24 10:51:23.9976180 2018-01-24 10:51:23.9970000
2018-01-24 11:08:23.2578500 2018-01-24 11:08:23.2570000

我的查询当前如下所示:

select t1.* from Table1 t1, Table12 t2 where t1.tradeDateTime = t2.tradeDate

正如您所猜测的,我没有得到这些示例的任何结果,因为纳秒不同。

所以我的问题是,如何忽略 where 子句中的纳秒?

编辑:

我知道我应该使用正确的JOIN。此查询只是为了测试我在使用 JOIN

的查询中是否犯了错误

最佳答案

这一切都取决于您想要的精度。您想仅匹配日期部分还是不带毫秒的日期和时间?

以下是更改数据精度的几种方法:

CREATE TABLE #dates ( val DATETIME2 );

INSERT INTO #dates ( val ) VALUES ( SYSDATETIME());
INSERT INTO #dates ( val ) VALUES ( SYSDATETIME());
INSERT INTO #dates ( val ) VALUES ( SYSDATETIME());

SELECT d.val AsOriginalValue ,
CAST(d.val AS DATETIME) AsDateTime ,
CAST(d.val AS DATETIME2(0)) AsDateTime2_0 ,
CAST(d.val AS DATE) AsDate
FROM #dates AS d;

DROP TABLE #dates;

结果:

AsOriginalValue             AsDateTime              AsDateTime2_0             AsDate
--------------------------- ----------------------- ---------------------- ----------
2018-01-25 14:35:14.3660549 2018-01-25 14:35:14.367 2018-01-25 14:35:14 2018-01-25
2018-01-25 14:35:14.3665552 2018-01-25 14:35:14.367 2018-01-25 14:35:14 2018-01-25
2018-01-25 14:35:14.3670555 2018-01-25 14:35:14.367 2018-01-25 14:35:14 2018-01-25

注意:注意四舍五入。

关于比较 datetime2 时 SQL 忽略纳秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48445225/

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