从两个 SQL 列中获取分钟差异

Get Minute difference from two SQL columns

我在 table 中有两列: 第一列仅以 varchar(257) 格式存储 hhmm(例如 2350 又名 11:50pm)。 第二列是时间戳。

如何获得两者之间的微小差异?

这是两列的示例。在 Management Studio 中,我单击 Alt + F1 查看有关 table 的信息,我被告知第 1 列是 varchar 类型,第 2 列是 Datetime 类型:

如果您将其作为消耗性数据提供,这会更快更容易。我没有打扰您输入所有示例数据。这里的挑战是数据存储不当。我意识到这超出了您的控制范围,但您仍然必须将其强制恢复为可用的数据类型。您将需要为此添加一些验证以确保这些值是有效时间。这也不能处理跨日边界,但考虑到数据的性质,我不知道你怎么能假装处理得很好。

create table #Something
(
    Col1 varchar(10)
    , Col2 datetime
)

insert #Something
select '1230', '2014-12-19 13:09:00.000' union all
select '1350', '2015-08-10 14:49:00.000'

select Col1
    , Col2
    , DATEDIFF(minute, cast(STUFF(Col1, 3, 0, ':') as time), CAST(Col2 as time))
from #Something