多个级别的 SQL Datediff [关闭]

Posted

技术标签:

【中文标题】多个级别的 SQL Datediff [关闭]【英文标题】:SQL Datediff on multiple levels [closed] 【发布时间】:2020-10-05 09:07:08 【问题描述】:

我在 SQL Server 中使用 datediff 函数时遇到很多问题。

根据观察之间的时间间隔,我有两个要加入的表;这些表格包含货物的到达时间如下yyyy-mm-dd hh:mm:ss

我发现了一个不同的问题,其答案将(希望)帮助我解决连接问题。上述示例提供的代码说明了以下内容,这就是斗争的开始。

Abs(DateDiff("d", pi.Product_Interest_Date, l.Lead_Date)) AS Date_Gap

来源:Join two tables on the same date or closest date (before or after)

但是,我需要根据完整日期找到值之间的日期差距,因此从年到秒。我是否正确理解 datediff 函数只接受一个级别(即仅一天或一分钟),还是我做错了什么?

如果是前者,有没有简单的方法可以做我想做的事?

【问题讨论】:

(1) 请以表格文本形式提供样本数据和所需结果。 (2) 用你正在运行的数据库标记你的问题:这是 SQL Server 吗? 嗯,我需要的是日期间隔的值,我可以分别获得分钟、秒或天等的值。但是,我需要将所有这些都考虑在内,因为货物可以在同一时间到达,但在不同的日期。所以我想知道是否有一种方法可以使用与示例类似的函数,但将日期的所有部分都考虑在内。 如果你想计算不同时期的差异,例如天、小时、分钟和秒,那么也可以得到最小分母的差异,因为你可以计算其余的形式。例如1494292 秒是 17 天 7 小时 4 分钟 52 秒。 【参考方案1】:

首先,SQL Server 中 days 的语法是:

abs(DateDiff(day, pi.Product_Interest_Date, l.Lead_Date)) AS Date_Gap

您使用的语法是 MS Access 语法。

SQL Server 没有间隔类型。您可以以秒为单位获得差异,然后转换为另一个单位。例如,十进制天数是:

abs(DateDiff(day, pi.Product_Interest_Date, l.Lead_Date)) / (24.0 * 60 * 60) AS Date_Gap

您没有提供描述您想要的确切结果的示例数据和所需结果,但这应该会让您走上正轨。如果这不能完全回答您的问题,那么您应该提出一个新的问题,其中包含示例数据、期望的结果以及对逻辑的清晰解释。

【讨论】:

以上是关于多个级别的 SQL Datediff [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Sql获取周月年的首尾时间。

用于多个 excel 文件加载的 SQL Server 存储过程 [关闭]

sql中 datediff的使用

SPARK SQL 中的 DATEDIFF

sql-datediff

SQL中计算时间差datediff()