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

时间:2015-08-05 19:18:51

标签: sql-server varchar difftime

我在表格中有两列: 第1列仅以varchar(257)格式存储hhmm(Ex.2350,也称为晚上11:50)。 第二列是时间戳。

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

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

enter image description here

1 个答案:

答案 0 :(得分:1)

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

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
相关问题