同一张表中的 SQL DATE 比较

Posted

技术标签:

【中文标题】同一张表中的 SQL DATE 比较【英文标题】:SQL DATE Comparison within same table 【发布时间】:2020-10-07 20:23:54 【问题描述】:

我有一个包含以下数据的 SQL 表。我需要将“B 列”中的日期与“C 列”中存在的所有日期进行比较,并从“C 列”中选择最接近“B 列”中可用日期但不应大于最大/分钟的日期“C 列”中的所有可用日期。

我希望得到如下结果。我试过 BETWEEN , DATEDIFF SQL 关键字,但没有任何帮助。任何帮助将不胜感激。

【问题讨论】:

您使用的是哪个 dbms? (在日期/时间方面,许多产品远不符合 ANSI SQL。) SQL Server 管理工作室 2008 Management Studio 不是 DBMS……它是一个客户端界面。运行select @@version。请将您的尝试添加到问题中。 建议您编辑问题以使用真实的列名,以便更好地了解您要做什么。这会有所帮助... 【参考方案1】:

SQL Server 中获取两个日期时间差的函数是DATEDIFF。您可以告诉它以分钟、秒或其他方式获得差异。从差值中取绝对值,因为您不知道两个日期时间中哪个更早,哪个更晚。使用TOP 获取差异最小的行。

select top(1) *
from mytable 
order by abs(datediff(second, b, c));

【讨论】:

以上是关于同一张表中的 SQL DATE 比较的主要内容,如果未能解决你的问题,请参考以下文章

同一张表中的行之间的差异(Oracle SQL)

如何比较同一张表(SQL Server)中的 2 行?

如何用通配符比较同一张表中的两条记录?

比较同一张表oracle中的数据

SQl Live:显示列的最小值,加上同一张表中的对应值,加上第二张表中的相关值

SQL Server:如何为同一张表中的不同客户获取 3 天内的滚动总和