首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MSSQL:选择已更新_at-created_at>2分钟的记录

MSSQL:选择已更新_at-created_at>2分钟的记录
EN

Database Administration用户
提问于 2023-06-02 12:10:14
回答 1查看 38关注 0票数 0

是否有方法选择created_at (日期时间)- updated_at (日期时间)>2分钟的所有行?

我用过这样的方法,但差别是很大的,不可靠:

代码语言:javascript
运行
复制
SELECT TOP (1000) 
    [id], 
    [created_at], 
    [updated_at], 
    CAST(
        CAST([updated_at]-[created_at] as timestamp) as bigint
    ) as diff
  FROM [dbo].[VoicePasswordReset] 
    WHERE CAST( CAST([updated_at]-[created_at] as timestamp) as bigint) > 360 
    ORDER BY created_at DESC;

收到的记录:

代码语言:javascript
运行
复制
id                                      created_at              updated_at              diff
d9932bac-fd87-42a3-b647-8e334c016b1a    2023-06-02 12:03:36.267 2023-06-02 12:04:37.000 18220
b99cc8f4-99bc-4833-95a8-76c8e14c77b1    2023-06-02 10:36:52.837 2023-06-02 10:37:44.000 15349
fa076677-54fc-45ae-8de5-6d68fc782b74    2023-06-02 08:57:49.397 2023-06-02 08:58:51.000 18481
b63f58d4-ce5e-4c44-8649-60690efac0d7    2023-06-02 08:10:43.020 2023-06-02 08:11:48.000 19494
eb3b2b5f-11dc-4221-b05d-be83e1701b30    2023-06-02 07:58:53.483 2023-06-02 07:59:12.000 5555
46d0b1f3-74d4-4cd0-be2f-3baed2fd9ac9    2023-06-02 07:53:07.370 2023-06-02 07:53:17.000 2889
b0264169-4d64-4470-95b1-58a3867b5717    2023-06-02 07:51:27.000 2023-06-02 07:52:05.000 11400
EN

回答 1

Database Administration用户

发布于 2023-06-02 13:07:50

与其得到值之间的差异,我更愿意这样做

代码语言:javascript
运行
复制
WHERE updated_at < DATEADD(MINUTE, 2, created_at)

也就是说,只需向该值添加2分钟,即可获得一个可用于比较的值。

这将确保返回正确的行。

对于diff列,您可能需要DATEDIFF,但您需要理解这并不是将差异计算为时间间隔,然后返回该间隔的日期部分。

它只是返回的“指定日期部分的边界跨越的计数”。

代码语言:javascript
运行
复制
DATEDIFF(YEAR, '2023-12-31 23:59:59', '2024-01-01 00:00:00') /*Returns 1*/

因此,您可能更喜欢在DATEDIFF中获得MILLISECOND,然后自己进行舍入,以获得更好地反映值之间实际时间差的结果。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/327816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档